gpt4 book ai didi

ruby - 在 Ruby 中更改 DateTime 的时区

转载 作者:数据小太阳 更新时间:2023-10-29 08:48:13 25 4
gpt4 key购买 nike

我尝试从图像中提取 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方法将 Time 转换为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com