Django 自动将日期时间字符串转换为本地时区
Posted
技术标签:
【中文标题】Django 自动将日期时间字符串转换为本地时区【英文标题】:Django automatically converting datetime string to local timezone 【发布时间】:2018-05-25 18:09:12 【问题描述】:我在我的有效负载中添加时间戳并将其存储在数据库中的每条记录。
假设我的有效载荷的一部分是"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']
。
知道我可能做了什么导致了这种情况,或者我可以做些什么来避免这种情况。
感谢任何帮助。
【问题讨论】:
【参考方案1】:你可以在settings.py中设置时区
以下是有效时区列表:
http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
你可以使用
TIME_ZONE = '亚洲/加尔各答'
对于 UTC+05:30
来自Selcuk Answer的参考
【讨论】:
是的,我们可以,我已将其设置为 UTC。在这里我不想使用时区,而是按原样存储。【参考方案2】:所以根据这个问题,问题是当 django 将 datetime 转换为数据库中的 postgres timestamptz 时。
Postgres prevent timestamp with timezone conversion
所以我需要在 PostgreSQL 中有时间戳字段
为此,我需要使用此问题中发布的答案。
Can we have django DatetimeField without timezone?
我需要在设置中指定 USE_TZ = False。
这可以确保在迁移 PostgreSQL 时考虑将 datetimefield 转换为 timestamp 而不是 timestamptz 。
【讨论】:
以上是关于Django 自动将日期时间字符串转换为本地时区的主要内容,如果未能解决你的问题,请参考以下文章