【问题标题】:How do you convert the following time from UTC to EST in Ruby (without Rails)?你如何在Ruby(没有Rails)中将以下时间从UTC转换为EST?
【发布时间】:2018-09-08 17:36:46
【问题描述】:

我试图在纯 Ruby 中将 UTC 时间“2018-04-02T14:30:00Z”转换为 EST。我注意到以下差异。如果我使用 Rails 解析 UTC 时间,然后添加 EST zone_offset,我得到的时间与使用“in_time_zone”帮助程序不同。 9:30 与 10:30。

2.2.4 :001 > t = Time.parse "2018-04-02T14:30:00Z"
 => 2018-04-02 14:30:00 UTC 
2.2.4 :002 > t + Time.zone_offset("EST")
 => 2018-04-02 09:30:00 UTC 
2.2.4 :003 > t.in_time_zone('Eastern Time (US & Canada)')
 => Mon, 02 Apr 2018 10:30:00 EDT -04:00 

【问题讨论】:

标签: ruby-on-rails ruby time


【解决方案1】:

您可以尝试localtime 方法,例如Time.parse("2018-04-02T14:30:00Z").localtime("-05:00").strftime("%m/%d/%Y %I:%M %p") 来漂亮地打印以获取时间对象删除strftime

【讨论】:

    【解决方案2】:

    我相信“东部时间(美国和加拿大)”实际上是 EDT 而不是 EST。这可以解释你的小时差。

    irb(main):014:0> t = Time.parse "2018-04-02T14:30:00Z"
    => 2018-04-02 14:30:00 UTC
    irb(main):015:0> t.in_time_zone('EST')
    => Mon, 02 Apr 2018 09:30:00 EST -05:00
    irb(main):016:0> t.in_time_zone('Eastern Time (US & Canada)')
    => Mon, 02 Apr 2018 10:30:00 EDT -04:00
    irb(main):017:0> 
    

    另见:https://time.is/ESThttps://time.is/EDT

    此外,时区是一个巨大的痛苦,经常让我的大脑崩溃。

    【讨论】:

      【解决方案3】:

      Rails 在时区方面做得非常好,如果不使用它,您将很难复制ActiveSupport::TimeWithZone#in_time_zone 的结果。

      例如,正如您所指出的:

      >> t = Time.parse "2018-04-02T14:30:00Z"
      >> t.in_time_zone('Eastern Time (US & Canada)')
      Mon, 02 Apr 2018 10:30:00 EDT -04:00
      

      但考虑到你也可以这样做:

      >> t = Time.parse "2018-01-02T14:30:00Z"
      >> t.in_time_zone('Eastern Time (US & Canada)')
      Tue, 02 Jan 2018 09:30:00 EST -05:00
      

      换句话说,ActiveSupport 不仅可以处理您的时区,还可以免费处理您的标准/夏令时挑战。甚至 moment.js 都不会这样做(或者如果会,我还没弄清楚怎么做)。

      您是否考虑过使用require 'active_support',它可以在不使用所有 Rails 的情况下为您提供此功能?

      【讨论】:

        猜你喜欢
        • 2014-09-22
        • 2021-10-27
        • 2012-06-06
        • 2021-11-15
        • 2020-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-24
        相关资源
        最近更新 更多