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
您的系统似乎已设置为 UTC。 Time.parse()
创建一个新的 Time 对象,该对象使用系统时区,并将其设置为分析的时间。 它不会更改新时间的时区以匹配分析日期的时区。 如果你真的想要这种行为,你可以使用如下的东西:
DateTime.parse(date.to_s).new_offset(date.iso8601[-6,6]).iso8601
更新:关于刚刚添加的问题strptime()
部分,它是完全相同的概念。 将使用默认时区创建新时间,其时间与您正在分析的日期匹配。