DateTime设置时区



ubuntu 14.04
ruby 1.9.3-p484
Rails 3.2.18

我有一个日期作为字符串:06/20/2015 02:45 AM

d = DateTime.strptime('06/20/2015 02:45 AM', '%m/%d/%Y %I:%M %p').to_time
=> Sat, 20 Jun 2015 02:45:00 UTC

Current TimeZone可以不同,放在Time.zone中。

我试过d.to_time.in_time_zone。它分别给出了PDT和CDT时区:

Fri, 19 Jun 2015 21:45:00 CDT -05:00
Fri, 19 Jun 2015 19:45:00 PDT -07:00

我需要得到DateTime对象保存日期Sat, 20 Jun 2015 02:45:00 PDT -07:00为PDT区域或Sat, 20 Jun 2015 02:45:00 CDT -05:00为CDT区域。

我想它会成功的:

zone = ActiveSupport::TimeZone.new("Central Time (US & Canada)")
d.to_time.in_time_zone.in_time_zone(zone)

还是

d.to_time.in_time_zone.in_time_zone("Central Time (US & Canada)")

试试这个:

#config/application.rb
 config.time_zone = 'Central Time (US & Canada)' 
 config.active_record.default_timezone = :local

我已经找到解决办法了。DateTime#offset规则:

d = DateTime.strptime('06/20/2015 02:45 AM', '%m/%d/%Y %I:%M %p')
d = d.change(offset: (Time.zone.now.utc_offset / 3600).to_s)

相关内容

  • 没有找到相关文章

最新更新