puts "date --- #{date}"
@date = Time.parse(date.to_s).iso8601 unless date.nil?
puts "@date -- #{@date}"
输出
Date --- 2012-08-12T12:15:17-07:00
@Date -- 2012-08-12T19:15:17+00:00
任何人都知道为什么?
此外,这种情况发生在strptime
Time.strptime("2012-08-12T12:05:08-07:00", "%Y-%m-%dT%H:%M:%S%:z")
=> 2012-08-12 19:05:08 +0000
答案 0 :(得分:1)
您的系统似乎设置为UTC。 Time.parse()
创建一个新的Time对象,它使用系统时区,并将其设置为解析的时间。它不会更改新时间的时区以匹配解析日期的时区。如果您真的想要这种行为,可以使用以下内容:
DateTime.parse(date.to_s).new_offset(date.iso8601[-6,6]).iso8601
更新:关于刚刚添加的问题的strptime()
部分,这是完全相同的概念。正在使用默认时区创建新时间,其时间与您正在解析的日期相匹配。