ruby 如何在特定时区中表示时间?

5us2dqdw  于 2023-04-29  发布在  Ruby
关注(0)|答案(2)|浏览(114)

我有一个Time对象,我想更改它的时区,但不更改它表示的逻辑时间。例如,2015-08-21 15:00:00 +00:00将变为2015-08-21 10:00:00 -05:00,如果我选择将时间转换为UTC-5时区。我该怎么做?
使用Ruby 20;我没有使用Rails。

编辑:@Tasos Stathopoulos提到的getlocal方法大部分都能工作,但是如果你在结果上调用zone,你会得到nil。这是可以理解的时间偏移与时区缩写之间没有一对一的Map,所以系统无法知道它应该给予您哪个zone但是我希望结果具有我指定的特定时区。

wgmfuz8q

wgmfuz8q1#

您可以使用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
snz8szmq

snz8szmq2#

require 'time'
 (Time.now.utc + Time.zone_offset("EDT")).strftime("%m/%d/%Y %H:%M:%S EDT")

 => "04/20/2023 14:49:05 EDT"

相关问题