Django自动将日期时间字符串转换为本地时区

时间:2017-12-12 05:55:06

标签: python django postgresql datetime

我在我的有效负载中添加时间戳,并将其存储在每个记录的数据库中。

假设我的有效负载的一部分是{"content":[{"timestamp":"2017-12-12 08:05:30"}]

这是我处理它的方式。

content['timestamp'] = parser.parse(content['timestamp'],dayfirst=True)

我的模型的时间戳字段为:

timestamp = models.DateTimeField(null=True)

当我签入我的数据库时,它将时间戳字段存储为:

2017-12-12 13:35:30

根据我的要求,应按原样存储。 2017-12-12 08:05:30

即它存储时间戳字段+我的本地时区(+5:30)小时。

我希望它按原样存储时间戳字段。

我尝试了其他帖子,建议使用del os.environ['TZ']

我知道我可能做了什么导致了这个或我能做些什么来避免这种情况。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

所以根据这个问题,问题是当django将datetime转换为数据库中的postgres timestamptz时。

Postgres prevent timestamp with timezone conversion

所以我需要在PostgreSQL中有时间戳字段

为了做到这一点,我需要使用这个问题中的答案。

Can we have django DatetimeField without timezone?

我需要在设置中指定USE_TZ = False。

这可以确保在迁移PostgreSQL时将datetimefield视为转换为时间戳而不是timestamptz。

答案 1 :(得分:0)

您可以在settings.py

中设置时区

以下是有效时区列表:

http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

您可以使用

TIME_ZONE ='亚洲/加尔各答'

代表UTC + 05:30

来自Selcuk Answer

的参考资料