1. 程式人生 > >Django設定時區為TIME_ZONE = 'Asia/Shanghai' USE_TZ = True後,存入mysql中的時間只能是UTC時間?

Django設定時區為TIME_ZONE = 'Asia/Shanghai' USE_TZ = True後,存入mysql中的時間只能是UTC時間?

因為Mysql儲存的時間不能靈活設定時區,不像datetime物件有一項引數專門指定時區,所以為了統一全球的時間,必須使用國際標準時間UTC,否則就會亂套。
所有時間在存如資料庫前,必須轉換成UTC時間。比如北京時間8點,存入mysql變成0點(UTC)。

官方文件,https://docs.djangoproject.com/en/2.1/topics/i18n/timezones/

當使用時區時,Django儲存在資料庫中的所有日期時間資訊都以UTC時區為準,在後臺使用有時區的datetime,前臺使用者使用時,在網頁上翻譯成使用者所在的時區。

看完後,一切疑慮都消除了,不是Django設定有誤,也不是Mysql設定有誤。