mysql - Django 对从 MySQL 导入的数据使用了错误的时区
问题描述
我在 Laragon 服务器上使用 Django 3 + Bootstrap 4 + MySQL 5.7,全部在 Windows 10 上。
我在 Django 中的设置:TIME_ZONE = 'Europe/Paris'
我在 MySQL 中的设置:(TIME_ZONE = SYSTEM
我的系统配置为“Europe/Paris”)
当我timezone.now()
在 Django 或CURRENT_TIMESTAMP
MySQL 中使用 a 时,我没有问题,显示正确的时间。但是我从 MySQL 导入的数据显示错误:+2 小时错误。对于我在该主题上阅读的内容,原因可能是time_zone
服务器上的 MySQL 表中缺少数据。你的观点是什么?我走上正轨了吗?我不想犯错,所以我宁愿先确认一下。
你认为在 MySQL 中保持这样的设置是否很好。我不应该更喜欢
TIME_ZONE = 'Europe/Paris'
而不是TIME_ZONE = SYSTEM
吗?
解决方案
保存在数据库中的日期数据始终采用格林威治标准时间 (GMT),django 会根据“TIME_ZONE”选项对其进行更改。因此,当您直接从数据库接收时间数据时,它会显示为 GMT。如果你必须转换它,你需要使用 tz.
from dateutil import tz
to_zone = tz.tzlocal()
datefromdatabase.astimezone(to_zone).date()
好勇气!
推荐阅读
- postgresql - 使用 docker-compose 时如何安全地停止/启动我的 postgres 服务器
- python - 如何使用替换方法替换句子中的第二个“是”
- java - 是否可以使用java在appium中处理iOS本机应用程序权限
- modelica - 为什么连接器的图形注释在重新声明时不被继承?
- java - Android Java ListView 从 Firebase 数据库中检索列表,但显示空的 TextViews 和 Images
- symfony - KnpSnappyBundle 页眉和页脚不显示
- windows - winrm : 无法建立新连接 [Errno 110]
- batch-file - 如何将文本文件中列出的那些文件夹的文件和文件夹列表获取到列表文件中?
- python - 动态生成具有唯一名称的字典条目
- angular - Ionic 3 - Angular 5 和 Firebase - 存储数据中的问题