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对象。
答案 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来解决所有日期/时间问题。