用于DB的Ruby解析时区字符串FORMAT

时间:2014-03-22 21:54:55

标签: ruby-on-rails ruby datetime timezone

我正在尝试解析一个击中我的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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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"