也许这个问题应该分成两篇文章,但我目前有一个API,用于几个业务客户。我目前使用ISO 8601时间戳和UTC时区来表示时间。但是,我不喜欢将这些时间戳附加到任何时区的想法,因为无论您在哪个时区,时间都应该是相同的。世界协调时间下午5点应该是下午5点。
我知道您可以将Z从ISO时间戳中删除,并且它将被解释为您所处的任何本地时间。这可以练习吗?如果是这样的话,我如何在Ruby中做到这一点?我读了时间课的医生,没有看到任何关于这个的东西。
编辑:,让我重述一下这个词,或者至少澄清一下。我之所以要寻找没有附加到时区的时间戳,正是因为我知道我的客户端服务器和API服务器很难匹配。如果客户端提交带有时间的事件,则该时间需要与特定于用户正在处理的事件的模糊区域设置不明确地相等。
这是一个mouthful...assume,我正在处理一个事件调度程序。每个事件都属于一家公司的店面或地点。当显示某个位置的时间时,假定所显示的时间位于该位置的时区,而且为了清楚起见,不应在格式化为用户的本地时区的时间中显示时间。如果我查看东海岸的调度程序,但是查看西海岸位置的事件,我应该看到的时间应该是西海岸地区的本地时间,而不是调整我的时区。
我知道一个解决方案可以是简单地存储时间与时区信息的位置相关联。但是,用户希望将时间转换到他们的时区的用例非常罕见,我宁愿让实现我的API easier...this实际上是我最初的实现,但是在许多不同的环境和多个编程语言中实现API,很明显,对于很多语言来说,显示时间戳时区的本地时间是一个障碍。如果用户希望将时间转换为他们的本地时区,我可以轻松地为location对象本身存储全局时区信息。
发布于 2012-11-04 14:50:08
我不知道你所说的“时间应该是一样的,不管你在哪个时区。世界协调时下午5点应该是科技委,等等”。世界协调时间下午5点显然不是5点CST!
不管怎么说,我不认为你提出的是一个好的做法。假设您关闭了Z
,并将时间戳解释为您所在的任何本地时间。因为这是一个网络API,所以客户机和服务器可能不在同一个时区。当客户提交“本地”时间时,这意味着什么?客户机上的本地时间(如果是,服务器如何知道这是什么?)服务器上的本地时间?不太清楚。这就是为什么要做的唯一合理的事情就是始终使用UTC的原因所在。
如果时间戳可能相关,则可以将时区附加到时间戳上。例如,“你应该在2012-11-10T22:00:00Z默哀一分钟,以纪念在WW1阵亡的士兵”听起来很奇怪,因为纪念日不在11月10日!“你应该在2012-11:11:00+13:00默哀一分钟”如果你把新西兰时区放在那里听起来好多了.在这种情况下,您可以保存和时间戳(在本地或UTC)以及时区偏移量(例如,将两者存储在数据库中)。
然而,它确实取决于你的时代所代表的。例如,在“在赤道,日落发生在18:00”中,使用不限定于时区的抽象时间是有意义的(在每个时区都是如此,而且/或您在谈论太阳时间)。但是在这个抽象的时间上附加一个日期没有什么意义,所以我认为在这种情况下您不会谈论ISO8601。
https://stackoverflow.com/questions/13222584
复制相似问题