Dre*_*son 108 ruby datetime runtime ruby-on-rails
在Ruby/Rails中,如何将UTC DateTime转换为另一个时区?
mck*_*eed 200
time.in_time_zone(time_zone)
Run Code Online (Sandbox Code Playgroud)
例:
zone = ActiveSupport::TimeZone.new("Central Time (US & Canada)")
Time.now.in_time_zone(zone)
Run Code Online (Sandbox Code Playgroud)
要不就
Time.now.in_time_zone("Central Time (US & Canada)")
Run Code Online (Sandbox Code Playgroud)
您可以通过执行以下操作找到ActiveSupport时区的名称:
ActiveSupport::TimeZone.all.map(&:name)
# or for just US
ActiveSupport::TimeZone.us_zones.map(&:name)
Run Code Online (Sandbox Code Playgroud)
如果Time.zone这是你想要的时区,那么你可以使用@date.to_time.to_datetime
> @date
=> Tue, 02 Sep 2014 23:59:59 +0000
> @date.class
=> DateTime
> @date.to_time
=> 2014-09-02 12:59:59 -1100
> @date.to_time.to_datetime
=> Tue, 02 Sep 2014 12:59:59 -1100
Run Code Online (Sandbox Code Playgroud)
在普通的 ruby 中,只有require 'date',使用new_offset方法:
require 'date'
d=DateTime.parse('2000-01-01 12:00 +0200')
l=d.new_offset('-0700')
u=l.new_offset('UTC')
puts "#{u.strftime('%a %F %T %Z')} ? #{l.strftime('%a %F %T %Z')}"
Run Code Online (Sandbox Code Playgroud)
使用在 Mac OS X 10.13 上标配的 ruby 2.3.7 进行测试。
| 归档时间: |
|
| 查看次数: |
76345 次 |
| 最近记录: |