我有一根绳子:
十月七日星期日下午四时
当我使用Time.parse时,Ruby假设时区是UTC。我如何告诉Ruby给我-0700时区?我试过用
tz.utc_to_local(Time.parse(string))但我还是能拿回UTC +0000时区。
发布于 2012-10-08 02:03:46
“在解析时间信息时,重要的是不要在不指定时区的情况下这样做”。
这个建议的瑰宝来自于这个有用的博客:在Rails中使用时区。
无论您是否使用rails,时间字符串总是有一个附加时区。在您的示例中,您假设时间字符串有-0700偏移量,但不将时区信息传递给解析方法(该方法假设它是UTC)。
> Rails.application.config.time_zone
=> "Mountain Time (US & Canada)"这是因为我有以下配置:
config.time_zone = 'Mountain Time (US & Canada)'
> string = "Sunday, Oct 7 4:00pm"
=> "Sunday, Oct 7 4:00pm"
> Time.parse(string)
=> 2012-10-07 16:00:00 -0600
> Time.parse(string).zone
=> "MDT"在纯红宝石中也是如此:
> require 'time'
=> true
> Time.local( 2012, 10, 07 )
=> 2012-10-07 00:00:00 -0600
> Time.local( 2012, 10, 07 ).zone
=> "MDT"
> string = "Sunday, Oct 7 4:00pm"
=> "Sunday, Oct 7 4:00pm"
> Time.parse(string)
=> 2012-10-07 16:00:00 -0600
> Time.parse(string).zone
=> "MDT"发布于 2012-10-08 01:30:45
确保您的时区设置正确。
config.time_zone = 'Eastern Time (US & Canada)'Time.parse应该默认为当前时区,但也可以尝试
Time.parse('####').in_time_zonehttps://stackoverflow.com/questions/12774018
复制相似问题