在保持时区不变的情况下读取,写入和序列化日期和时间变得令人讨厌。我正在使用Ruby(和Rails 3.0),并试图改变DateTime的时区。 (到UTC),但不是时间本身。如何更改Ruby中DateTime的时区?
我想这一点:
t = DateTime.now
t.hour
-> 4
t.offset = 0
t.hour
-> 4
t.utc?
-> true
我来最接近的是这一点,但它并不直观。
t = DateTime.now
t.hour
-> 4
t += t.offset
t = t.utc
t.hour
-> 4
t.utc?
-> true
有什么更好的办法吗?
如果您实际上使用'now'作为时间戳,那么将其作为同一时间的UTC标记版本存储在数据库中是错误的,是正确的?当系统的所有部分都使用UTC时,我个人会遇到最少的麻烦,只有在我可能调整的视图中显示在服务器或浏览器的时区中时才会遇到。 – Phrogz 2010-12-17 20:43:20
这很困难,因为我正在阅读时区未知或不相关的CSV文件中的日期,因此我将它们作为UTC存储在数据库中。但是,当使用本地区域的日期查询(即大于'2010/01/01 8:00 pm')时,它首先将该时间转换为UTC(我的问题的来源),然后再在查询中使用它。我试图让整个应用程序不受时区限制,以便用户可以在7:00 - 8:00范围内加载包含时间的CSV文件,然后查询7:00 - 8:00并返回同一组记录。相反,Ruby假定分析的时间在本地区域中。 – 2010-12-17 21:17:03