Ruby的时间似乎只“记住”了我的本地专区名称和UTC。创建的time对象具有正确的偏移量,但#zone为nil。这在控制台中很容易看到(我使用的是MDT):
>> Time.parse("12:00 AM MDT")
=> 2018-03-14 00:00:00 -0600
>> Time.parse("12:00 AM MDT").zone
=> "MDT"
>> Time.parse("12:00 AM PST")
=> 2018-03-14 00:00:00 -0800
>> Time.parse("12:00 AM PST").zone
=> nil
>> Time.parse("12:00 AM EDT")
=> 2018-03-14 00:00:00 -0400
>> Time.parse("12:00 AM EDT").zone
=> nil
UTC也有效,但似乎仅此而已。
有没有办法保留其他时区的缩写?
发布于 2018-03-15 10:46:55
您不能从Time对象获取zone
名称,而可以从该对象获取offset
值。不支持timezone abbreviations in ruby
time = Time.parse("12:00 AM PST")
time.gmt_offset
请注意,Time.zone
是Rails' ActiveSupport的一个特性-它不是由TZInfo提供的。ActiveSupport在内部使用TZInfo实现对时区的支持。
您可以将区域名称传递给ActiveSupport,使用区域名称信息构造新的时间。
time = ActiveSupport::TimeZone['Hawaii'].parse('12 AM')
time.zone # 'HST'
您也可以在rails中使用in_time_zone
方法。
time = Time.parse('12 AM').in_time_zone('Hawaii')
time.zone # 'HST'
希望它能帮上忙!
https://stackoverflow.com/questions/49287447
复制相似问题