我正在处理Rails和Postgres中的日期和时间并遇到这个问题:
数据库采用UTC格式.
用户在Rails应用程序中设置选择的时区,但仅在获取用户本地时间来比较时间时使用.
用户存储时间,例如2012年3月17日晚上7点.我不希望存储时区转换或时区.我只想保存日期和时间.这样,如果用户改变他们的时区,它仍将显示2012年3月17日,晚上7点.
我只使用用户指定的时区来获取用户本地时区当前时间之前或之后的记录.
我目前正在使用"没有时区的时间戳",但是当我检索记录时,rails(?)会将它们转换为应用程序中的时区,这是我不想要的.
Appointment.first.time
=> Fri, 02 Mar 2012 19:00:00 UTC +00:00
Run Code Online (Sandbox Code Playgroud)
因为数据库中的记录似乎是以UTC形式出现的,我的黑客是用当前时间,用'Date.strptime(str,"%m /%d /%Y")删除时区,然后做我的查询:
.where("time >= ?", date_start)
Run Code Online (Sandbox Code Playgroud)
似乎必须有一种更简单的方法来忽略周围的时区.有任何想法吗?
我是否需要将Postgres中的所有现有日期时间从当前时区转换为UTC,或者Django 1.4时区在读取非UTC时(但保存为UTC时)时会理解.
我有一个完美的工作Django 1.3/Postgres网站,我处理多个时区.我正在存储所有日期时间w.时区信息,但这恰好设置为Postgres中的美国/东部时区(是的,我知道应该是UTC).
现在,我计划升级到Django 1.4并计划在那里使用Django时区支持.根据我的理解,它会将UTC中的所有日期时间保存到数据库,这很好,但是我现有的所有信息都设置了时区而不是UTC.
有没有人根据这个迁移,它是如何工作的,感觉就像我没有任何问题或者我需要迁移大量的日期时间数据.