我有一个 Time 对象,我想更改它的时区而不更改它代表的逻辑时间。例如,如果我选择将时间转换为 UTC-5 时区,2015-08-21 15:00:00 +00:00 将变为 2015-08-21 10:00:00 -05:00。我怎样才能做到这一点?
我使用的是 Ruby 2.0;我没有使用 Rails。
编辑:getlocal
@Tasos Stathopoulos 提到的方法大多有效,但如果你调用 zone
你得到的结果 nil
。这是可以理解的 - 时间偏移量与时区缩写之间不存在一对一的映射,因此系统无法知道哪个 zone
它应该给你——但我希望结果有我指定的某个区域。
最佳答案
您可以使用Time#getlocal
(http://ruby-doc.org/core-2.0.0/Time.html#getlocal-method)。
irb(main):001:0> time = Time.now
=> 2015-08-21 21:45:40 +0300
irb(main):002:0> time.getlocal('-05:00')
=> 2015-08-21 13:45:40 -0500
irb(main):003:0> time = time.getlocal('-05:00')
=> 2015-08-21 13:45:40 -0500
irb(main):004:0> time
=> 2015-08-21 13:45:40 -0500
关于ruby - 如何表达特定时区的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32147352/