也许这个问题应该分成两篇文章,但我目前有几个商业客户的 API。我目前正在使用带有 UTC 时区的 ISO 8601 时间戳来表示时间。但是,我不喜欢将这些时间戳附加到任何时区的想法,因为无论您在哪个时区,时间都应该相同。5PM UTC 应该是 5PM CST,等等......
我知道您可以将 Z 从 ISO 时间戳中去掉,它将被解释为您所处的任何本地时间。这样可以吗?如果是这样,我如何在 Ruby 中做到这一点?我阅读了 Time 课程的文档,但对此一无所知。
编辑:让我稍微重新措辞一下,或者至少澄清一些事情。我寻找未附加到时区的时间戳的原因正是因为我知道我的客户端服务器和 API 服务器几乎不会匹配。如果客户端提交带有时间的事件,则该时间需要不明确地等于特定于用户正在处理的事件的不明确区域设置。
这是一个拗口……假设我正在开发一个事件调度程序。每个事件都属于公司的店面或位置。当显示某个位置的时间时,假定显示的时间在该位置的时区中,并且为了清楚起见,永远不应在格式化为用户本地时区的时间显示。如果我正在查看东海岸的调度程序,但查看西海岸位置的事件,我应该看到的时间应该是西海岸位置的本地时间,而不是针对我的时区进行调整。
我知道一个解决方案可能是简单地存储时间及其相关位置的时区信息。但是用户想要将时间转换为他们的时区的用例非常罕见,我宁愿让我的 API 更容易实现……这实际上是我最初的实现,但在许多不同的环境中和跨多个环境中实现 API对于编程语言,很明显,对于许多语言来说,显示该时间戳所在时区的本地时间是一个障碍。如果用户想要将时间转换为他们的本地时区,我可以轻松地为位置对象本身存储全球时区信息。