我尝试从图像中提取 exif 信息,但现在日期字段的时区出现问题。在图像本身中,存储的日期和时间没有时区(例如 2014:01:07 20:44:32)。 当我运行 exifr 时,我得到一个 DateTime 对象,我可以使用以下命令将其打印到字符串中:
created = date.strftime("%FT%T%:z")
=> "2014-01-07T20:44:32+01:00" # on my system with UTC+1
=> "2014-01-07T20:44:32+00:00" # on TravisCI
输出的时区根据系统设置而变化。这是一个问题,因为我需要独立于运行代码的系统来获取特定图像的相同值。如果时区始终为 UTC,将会有所帮助。
如何在独立于系统设置的情况下获得一致的 UTC 结果?我怎样才能用 Ruby 1.9 和 2.0 做到这一点?我找到了许多针对 Rails 的解决方案,但没有针对普通 Ruby 的解决方案。你能帮我吗?
最佳答案
utc
方法将时间
转换为UTC。
created = date.utc.strftime("%FT%T%:z")
此方法在 1.8.7、1.9.3、2.0.0 和 2.1.0 中可用。
如果您不想在更改时区时影响时间,可以在转换之前添加差异:
time = Time.now # => 2014-01-08 21:45:41 +0100
time += time.gmt_offset # => 2014-01-08 22:45:41 +0100
time.utc # => 2014-01-08 21:45:41 UTC
关于ruby - 在 Ruby 中更改 DateTime 的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002733/