首頁 > 軟體

Django的時區設定問題

2020-06-16 16:40:10

1.Django的時區問題

  django預設的時區是UTC,平時是沒有什麼影響的,但是在需要將時間戳轉換成本時區的時間或者是獲取當前的原生的localtime的時候就出現了問題。之前程式在測試時是執行在Windows環境,所以即使settings.py中的TIME_ZONE使用預設時區,Django也會根據本機的時區使用當前時區時間。然而程式放到linux執行程式時,Django的時區會使用settings.py中的TIME_ZONE設定的時區,所以這時就出現了問題。再有當我用指令碼在linux上測試或者直接進入Python環境的時候,執行time.localtime(),顯示本機所在時區的當前時間。

<div">

'''
  我的django程式中的一部分,這部分功能是將使用者的聊天時間戳轉化為格式化時間。由於我使用的預設時區UTC,原以為在linux環境中會像windows環境中一樣會使用機器設定的時區的時間,
結果並不是,而是使用了預設時區的時間。
'''
import
time send_time = 1543524392 day = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(send_time)) print day # 2018-11-29 20:46:32--->UTC 程式碼中列印出來的時間是UTC時間

2.Django時區設定

  • 在Django的settings中,有兩個設定引數是跟時間與時區有關---->TIME_ZONEUSE_TZ
  • USE_TZTrue,Django使用系統預設時區,即America/Chicago,此時TIME_ZONE不管有沒有設定都不起作用
  • USE_TZFalseTIME_ZONENoneDjango會使用預設的America/Chicago時間
  • USE_TZFalse,TIME_ZONE設定為其它時區,則要具體的程式執行環境。如果是Windows系統,則TIME_ZONE設定是沒用的,Django會使用本機的所使用的時區。如果為其他系統,則使用TIME_ZONE設定的時區------>即USE_TZ = FalseTIME_ZONE = 'Asia/Shanghai', 使用上海的UTC時間

IT145.com E-mail:sddin#qq.com