在悉尼时间6:00am
,Rory Allan点击浏览器中的foofoo
按钮。
这将在foofoo
表中插入我的服务器数据库中的8:00pm UTC
时间戳。
很多人对这个foofoo
按钮很兴奋,他们希望看到当天悉尼时间的时间Rory点击了它。
当我盯着加利福尼亚州的屏幕并查看点击状态时,我想看到他点击了6:00am
,而不是1:00pm
,如果我拉,我就会看到来自服务器的UTC时间,让我的浏览器转换它。
你看,许多不同的人点击foofoo
,例如德国的Phillip Herman,或俄罗斯的Ivan Efimiov。我们关心的是他们点击它的那一天的相对时间,无论观看位置如何,都是在他们点击它的位置。
我不知道最好的方法。我是否采用本地时间戳并将其转换为字符串,除了实际的UTC时间戳之外还存储它?或者这是一个常见的问题,我还没有找到共同的解决方案?我猜/希望后者。
这不是特定于语言的。这些日期有很长的路程:
Unix timestamp > Python date > JSON > Node > Mongo > Node > Browser
答案 0 :(得分:1)
好的,显然8:00pm UTC
信息不足。但是你真的想知道什么?
06:00
是否有足够的信息?
LocalTime
,TimeOfDay
等。HH:MM
格式的字符串(24小时制)(60 * HH) + MM
记录总分钟数。 06:00 Australia/Sydney
是否有足够的信息?
06:00+10:00
是否有足够的信息?
time with time zone
数据类型,例如PostgreSQL中存在的数据类型,尽管PostgreSQL文档强烈反对使用此类型。假设您有日期,例如今天,那么:
2017-05-31T06:00
是否有足够的信息?
DateTime
或LocalDateTime
的各种语言的组件中 - 但请注意它不受任何特定时区的约束。在.NET中使用DateTimeKind.Unspecified
,或在Python等中使用“天真的”DateTime。 2017-05-31T06:00+10:00
是否有足够的信息?
DateTimeOffset
或OffsetDateTime
类型。 2017-05-31T06:00 Australia/Sydney
是否有足够的信息?
2017-05-31T06:00+10:00 Australia/Sydney
是否有足够的信息?
ZonedDateTime
,或在Python中使用“感知”DateTime(pytz,dateutils等),或在平台中存在类似类型。timestamp with time zone
,因为您可能希望它存储时区,但通常不会(尽管名称)。正如您所知 - 有很多选项,它实际上取决于每种语言/平台中可用的确切用例和功能。如果您单独搜索/询问每个细节,您会找到更多详细信息。