我正在构建一个 Sinatra 站点,该站点具有混合 UTC/PST 数据源,但将在 PST 中查看。所以我需要一种方法来轻松地将 Time 对象从 UTC 转换为 PST。
没有 Rails,我无法访问Time.zone
, in_time_zone
, etc.
我只需要更改 Time 对象的时区,例如2014-08-14 21:44:17 +0000 => 2014-08-14 14:44:17 -0700.
首先我尝试了这个:
class Time
def to_pst
self.utc + Time.zone_offset('PDT')
end
end
但这改变了实际的时间戳而不是区域。我两个都需要time.to_i
and time.strftime
上班;所以我无法更改时间戳的绝对值。
> t = Time.now
=> 2014-08-14 21:46:20 +0000
> t.to_pst
=> 2014-08-14 14:46:20 UTC
> t.to_i
=> 1408052780
> t.to_pst.to_i
=> 1408027580
宝石“时区” https://rubygems.org/gems/timezone也存在类似的问题。
This http://www.java2s.com/Code/Ruby/Time/Converttimetotimezone.htm解决方案有效,但会改变全局变量并且不是线程安全的。
操作系统时区需要保持 UTC。
我只需要一种方法来更改单个时间对象上的时区。这是一个简单的问题,似乎应该有一个简单的解决方案!有人找到了吗?提前致谢!
纯红宝石
Time.now.utc.localtime("+05:30")
其中 +05:30 (IST) 是特定区域的偏移量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)