繁体   English   中英

将时间戳转换为本地时区中的正确日期时间 - Django

[英]Convert timestamp to correct datetime in local timezone - Django

我从 API 获得时间戳。 当我转换它时:

timestamp = datetime.fromtimestamp(json.loads(m)["_timestamp"], tz=pytz.timezone('Europe/Berlin')) 

当我打印它时,我在控制台中得到了正确的时间:

2021-11-10 15:22:26+01:00

但是当我使用以下命令将其保存到数据库时:

BedTemperatureHistory.objects.create(TimeStamp=timestamp)

时间戳在数据库中看起来像这样(少一小时):

2021-11-10 14:22:26.000000 +00:00 

我的时区设置如下所示:

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Europe/Berlin'

USE_I18N = True

USE_L10N = True

USE_TZ = False

有谁知道我需要做什么才能在我的数据库中保存正确的时间戳?

您需要在设置中启用时区支持。

USE_TZ = True

编辑:时间戳实际上已正确存储在您的问题中。 你会注意到这两个时间实际上是一样的,15:22+01:00 和 14:22+00:00 是一样的。 Django 以 UTC 存储日期时间,以避免夏令时问题:

Django 将日期时间信息以 UTC 格式存储在数据库中,在内部使用时区感知日期时间对象,并在模板和表单中将它们转换为最终用户的时区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM