Rails,Moment和Timezones(缩写+偏移)

时间:2017-07-07 00:11:11

标签: ruby-on-rails momentjs

我正在创建一个将由Javascript框架使用的Rails API。时间显示和操作将由MomentJS控制。前端能够显示日期以及时区缩写(例如1/1/2010 11:00 PST)非常重要。

根据我的理解,偏移(例如-0700)不足以确定实际时区,而时区缩写并不总是唯一的。

我只想到两个选项来解决这个问题:

  1. 以UTC格式返回所有时间,每次指定时区时都有一个额外字段(例如{ pick_up: "17-06-08T18:59:21.215Z", pick_up_tz: 'America/New_York' }(或pick_up_tz: 'PST'
  2. 使用非标准日期时间格式,包括时区缩写和偏移量(例如{ pick_up: "17/09/06 13:34:00 CDT -05:00"
  3. 这些合理的解决方案还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

  

使用非标准日期时间格式

永远不要这样做。 API应始终以ISO 8601返回时间。

  

以UTC格式返回所有时间,每次指定时区时都有一个额外字段

您是正确的,偏移量不足以识别时区,因此您需要将其包含在API响应中,最好是IANA time zone

您是否转换为UTC或包含偏移是优先考虑的事项;无论您转换为显示的时区,2017-06-08T18:59:21.215Z2017-06-08T11:59:21.215-0700都意味着同一时间。包括偏移量可用于识别存储的偏移量是否与时区不同,因为如果偏移量不同,您可能只显示时区限定符。