我怎样才能在特定时区表达时间?

时间:2015-08-21 18:43:00

标签: ruby

我有一个Time对象,我想更改其时区而不更改它所代表的逻辑时间。例如,如果我选择将时间转换为UTC-5时区,则2015-08-21 15:00:00 +00:00将成为2015-08-21 10:00:00 -05:00。我怎么能这样做?

我正在使用Ruby 2.0;我没有使用Rails。

修改:@Tasos Stathopoulos提到的getlocal方法大多有效,但如果您在结果上调用zone,则会获得nil。这是可以理解的 - 没有时间偏移与时区缩写的一对一映射,因此系统无法知道它应该给你哪个zone - 但我希望结果有一定的我指定的区域。

1 个答案:

答案 0 :(得分:2)

您可以使用Time#getlocalhttp://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