ruby - 在 Ruby 中更改 DateTime 的时区

标签 ruby datetime timezone

我尝试从图像中提取 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/

相关文章:

mysql - Solr 索引我的 SQL 时间戳或日期时间字段

codeigniter - 更改datetime到date以便在codeigniter中进行比较

ruby - 在 Ruby 中设置哈希值等于另一个哈希值

mysql - Rails - 如何从对象中获取随机记录?

c# - 在 EF 查询中添加 DateTime 和 TimeSpan 的代码示例

java - 将数据库时间转换为 IST 日期时间

python - 如何从 python 中的日期时间字符串获取时区?

ruby - Rest-Client gem RoR,获取 SSL 错误版本错误

javascript - 如何在 Rails 应用程序中安装 jQuery UI?

python - 从 UTC 偏移获取时区缩写