【问题标题】:Ruby parse time zone string FORMAT for DBRuby 为 DB 解析时区字符串 FORMAT
【发布时间】:2014-03-22 21:54:55
【问题描述】:

我正在尝试解析一个正在访问我的 api 的字符串。传入的字符串是

"2014-03-19T04:00:00.000Z"

我需要以下格式的 db sql 才能工作:

"2014-03-19 00:00:00 -0400"

目前,我想出的解决方案是

Time.zone.parse("2014-03-19T04:00:00.000Z").in_time_zone('America/New_York').to_s

这对我来说是一个不优雅的解决方案,我觉得应该有一种更动态的做事方式而不指定时区名称(默认情况下它应该是本地的)。我只想切换字符串的格式,因为它们应该是等效的。 谢谢

【问题讨论】:

    标签: ruby-on-rails ruby datetime timezone


    【解决方案1】:

    application.rb文件中配置time_zone并使用如下:

    # application.rb:
    class Application < Rails::Application
      config.time_zone = 'America/New_York'
    end
    
    Time.zone.parse("2014-03-19T04:00:00.000Z").to_s
    # => "2014-03-19 00:00:00 -0400"
    

    更多使用示例

    $ > Time.zone = "America/New_York"
    # => "America/New_York"
    $ > Time.zone
    # => (GMT-05:00) America/New_York 
    $ > Time.zone.now
    # => Sat, 22 Mar 2014 18:28:48 EDT -04:00
    

    【讨论】:

      【解决方案2】:
      irb(main):008:0> Time.parse("2014-03-19T04:00:00.000Z").getlocal.strftime("%F %T %z")
      => "2014-03-19 04:00:00 +0000"
      

      在 GMT+1 的系统上:

      irb(main):003:0> Time.parse("2014-03-19T04:00:00.000Z").getlocal.strftime("%F %T %z") 
      => "2014-03-19 05:00:00 +0100"
      

      【讨论】:

      • 这是它的当前格式。我需要 -0400 在最后
      • 它就在那里。我的语言环境时区是 UTC 所以 +0000。
      • 添加了一个在我的另一台服务器上运行的示例,时间为 GMT+1
      猜你喜欢
      • 2022-11-15
      • 1970-01-01
      • 2014-02-18
      • 2023-04-07
      • 1970-01-01
      • 2018-01-15
      • 2011-07-21
      • 1970-01-01
      相关资源
      最近更新 更多