我正在为工作安排 Web 应用程序,但遇到了一个非常奇怪的问题。该应用程序使用 Django 和 FullCalendar。在应用程序中,用户可以在 FullCalendar 中创建一个事件,开始和结束时间将作为 DateTime 字段存储在 PostgreSQL 数据库中。当事件返回到日历时,我使用 Django DateTag 将时间转换为 UnixTimestamp。除了所有事件的时间戳将提前一小时随机返回外,一切都完美无缺。大约每隔几次我访问该页面,时间戳就会关闭一个小时。
有没有其他人遇到过类似的问题并且能够找到解决办法?
最佳答案
可疑的听起来像一个时区问题,可能涉及夏令时。
您知道这些 types in PostgreSQL 的区别?
timestamp
timestamp with time zone
注意区别:
db=# SELECT '2011-10-20 10:00+1'::timestamp; timestamp
---------------------
2011-10-20 10:00:00
db=# SELECT '2011-10-20 10:00+1'::timestamp AT TIME ZONE '-1';
timezone
------------------------
2011-10-20 11:00:00+02
您可能会在 chapter on time zones 中找到线索.
转换时间戳列很简单。只是切断时区部分:
ALTER TABLE tbl ALTER col TYPE timestamp;
将所有时间转换为特定时区,例如“UTC”:
ALTER TABLE tbl ALTER col TYPE timestamp USING col::timestamp AT TIME ZONE 'UTC';
关于Django 时间戳不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7824832/