Rails - 用时区解析时间的更好方法?

时间:2012-07-23 22:36:52

标签: ruby-on-rails ruby ruby-on-rails-3 datetime timezone

Time.parse返回没有时区的Time对象。我想保留时区信息。有没有更好的方法来执行此操作,然后使用以下代码?

def parse_with_timezone( string_input)
  /(.*)([+-]\d\d):?(\d\d)$/.match( string_input) do |match|
    tz = ActiveSupport::TimeZone[match[2].to_i.hours + match[3].to_i.minutes]
    tz.parse( match[1])
  end
end

输入是这样的字符串,如“2012-12-25T00:00:00 + 09:00”。此函数输出TimeWithZone对象。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

您是否正在寻找当前本地时区的特定时区?

# Current zone
1.9.3p194> Time.zone.parse('2012-12-25T00:00:00+09:00')
=> Mon, 24 Dec 2012 15:00:00 UTC +00:00

控制台设置为UTC以上,但适用于您已配置的任何内容

# Specific timezone 
1.9.3p194> Time.find_zone('Wellington').parse('2012-12-25T00:00:00+09:00')
=> Tue, 25 Dec 2012 04:00:00 NZDT +13:00 

我注意到你试图通过+9作为例子

1.9.3p194> Time.zone = 'Tokyo'
=> "Tokyo" 
1.9.3p194> Time.zone.parse('2012-12-25T00:00:00+09:00')
=> Tue, 25 Dec 2012 00:00:00 JST +09:00

为您提供正确的结果。

答案 2 :(得分:0)

我更喜欢使用Chronic来解决所有日期/时间问题。

相关问题