Django 时间戳不一致

标签 django postgresql fullcalendar unix-timestamp

我正在为工作安排 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/

相关文章:

javascript - PDF 在 Rotativa 中无法正确呈现

jquery - 如何在 JQuery Fullcalendar 中使用 slotMinutes

python - Django 加密 key 完整性

python - Django - URL 路由问题(无法导入名称 'urls')

python - 如何检索分配给 Django 中的组的所有权限

ajax - 如何在 Django 中创建等待页面

perl - 为什么这个 postgres 存储过程想要 `use utf8` ?

java - 在psql中获取TEXT列值

sql - 如何添加一列,如另一列的 sum()

javascript - 在初始化新日历之前,在引导选项卡上销毁 fullcalendar 单击