我有一个日期字符串20101129220021
,所以我将使用
require 'date'
d = DateTime.parse('20101129220021')
这部分工作正常,我得到一个日期,即UTC。
我的问题是,如何将其转换为当地时间?我尝试了很多方法,比如使用d.to_time
提取时间部分并操纵结果,但它没有用。据我所知,DateTime
对象是不可变的。我能帮忙吗?
答案 0 :(得分:4)
irb(main):001:0> require "date"
=> true
irb(main):002:0> d = DateTime.parse('20101129220021')
=> #<DateTime: 2010-11-29T22:00:21+00:00 (70719276007/28800,0/1,2299161)>
irb(main):003:0> d.to_time
=> 2010-11-30 00:00:21 +0200
ruby 1.9.2p180(2011-02-18)
答案 1 :(得分:3)
您可以根据时区添加合理分数以获取当地时间。
require 'date'
# Make this whatever your zone is. Using UTC +0300 here.
ZONE = 3
d = DateTime.parse('20101129220021') + Rational(ZONE,24)
d.to_s # => "2010-11-30T01:00:21+00:00"