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)