就解决方案:全球化截止时间的处理

2016-06-12 07:38:04 +08:00
 lbfeng

假设注册截止时间是北京 6 月 15 日 23:59 ,当北京是 6 月 16 日 2 时 00 分时已经过了截止时间,纽约是 6 月 15 日下午 2 时,不能注册了。纽约用户会抱怨,还没过截止时间。我也没办法直接在站上写截止时间是北京时间 6 月 15 日 23:59 ,因为不能让用户去换算出这是当地的几点。有什么办法能识别当地的时间并和 6 月 15 日 23:59 (无论哪个时区)这个时间作比较。

后端 flask

2783 次点击
所在节点    问与答
15 条回复
binux
2016-06-12 07:43:53 +08:00
为什么不能写「截止时间是北京时间 6 月 15 日 23:59 」?
你用户群是哪个时区,就写哪个时区的时间,多个时区,就写多个主要时区的时间,有什么不可以?
实在不行,写 UTC 也可以啊
caizixian
2016-06-12 07:48:17 +08:00
还可以像 PSF 选票一样用 AOE

https://en.m.wikipedia.org/wiki/Anywhere_on_Earth
publicID002
2016-06-12 08:59:49 +08:00
可以用 js 直接帮用户换算成当地时间
jhaohai
2016-06-12 09:36:10 +08:00
直接用倒计时
Mutoo
2016-06-12 09:38:14 +08:00
前端 javascript 的 Date 默认使用的就是 local time ,提交到 server 的时候,将 timezone 一并提交。
后端用预定好的时间 + timezone 构造 Date 实例作截止时间判断。
just4test
2016-06-12 09:46:08 +08:00
hahastudio
2016-06-12 10:06:42 +08:00
你看这么多活动的截止时间都写 PDT ,也没见其他时区的用户抱怨不是= =
BOYPT
2016-06-12 10:11:40 +08:00
都是给服务商当地时间然后客户自己算的啊,平时国外网站优惠活动都是这样的。
如果你的客户特别高贵,就为他专门算一个显示在页面上咯
lbfeng
2016-06-12 10:22:45 +08:00
@binux 一个美国人能马上把北京时间 6 月 15 日 23:59 换算成当地时间?我要考虑用户友好。
pimin
2016-06-12 10:56:50 +08:00
@lbfeng
flask-moment 扩展
dorentus
2016-06-12 12:21:04 +08:00
所以你想要实现的是下面这样?

1. 用户 A (在东八区)设置了一个事件的截止时间为 6 月 15 日 23:59
2. 用户 B (也在东八区)在北京时间 6 月 16 日 00:00 时来看,发现事件已经截止了
3. 用户 C (在东七区),和 B 在同一个时间点来看,发现事件还没截止

那么问题来了,这事件到底什么时候截止?
假如我一台电脑用的是东九区的时间,另一台用的是东八区的时间,那么对于同一个事件,两边看到的状态不一样,这合理吗?

----

正确的解决办法就应该是像上面大家说了的,在客户端 /前端把时间换成用户本地的时间显示,这样谁也不会弄错,再加个倒计时就更好了。
yangff
2016-06-12 12:23:07 +08:00
时间写 XX:XX UTC 然后加上这个链接 http://www.timeanddate.com/worldclock/
mko0okmko0
2016-06-12 14:43:34 +08:00
整个是概念与意图的问题.
假设不使用 UTC/北京时间这样统一的截止时间.
那就各目标区域各有各的截止时间.
例如中文网页截止时间.英文网页截止时间.XX 语系的截止时间.
或是从用户端的浏览器讯息 /IP 来判断用户在哪个时区.用该时区的截止时间.
例如一个中文人士在美国.请问他该用哪个截止时间?在我看是应该用美国的.
用户报名时.应该上传储存该用户的地区 /时区 /语系讯息.用于设计结始时间的考虑.
jokie
2016-06-12 14:56:22 +08:00
美国人访问的时候 换算一下时间 不行么
lbfeng
2016-06-12 23:57:02 +08:00
@dorentus 是这样的,用户 A 有自己的网站,据我调查都只显示一个截止日期比如 6 月 15 日,并没有标注时区,也没有时区转换表(这个部分我控制不了)。 A 的网站上有注册链接导到我这边来。假设其他用户只有在需要注册时才会到我这, 并且本能的认为 6 月 15 日是自己时区的 6 月 15 日(因为 A 的站里没有写明时区)。时区较晚的用户在本地 6 月 15 日较晚时注册会比较尴尬,因为前后价格可能会差几十至几百刀。用户 A 本身并不在乎一天内的差价,但希望能针对不同时区的用户只要当地还在 6 月 15 日内价钱就不变,主要是这一小撮用户回去联系 A ,认为这个不合理, A 觉得可以忽略时区差异。至于您假设的一个用户两台不同时区的电脑,由于可能性太低可以不用考虑。

我的初衷是必须用户友好,不能让用户自己去换算时差。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/285015

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX