050:navie時間和aware時間詳解
阿新 • • 發佈:2019-01-03
navie時間和aware時間:
什麼是navie時間?什麼是aware時間?
- navie時間:不知道自己的時間表示的是哪個時區的。也就是不知道自己幾斤幾兩。比較幼稚。
- aware時間:知道自己的時間表示的是哪個時區的。也就是比較清醒。
pytz庫:
專門用來處理時區的庫。這個庫會經常更新一些時區的資料,不需要我們擔心。並且這個庫在安裝Django的時候會預設的安裝。如果沒有安裝,那麼可以通過pip install pytz
的方式進行安裝。
astimezone方法:
將一個時區的時間轉換為另外一個時區的時間。這個方法只能被aware
型別的時間呼叫。不能被navie
型別的時間呼叫。示例程式碼如下(Linux環境下進入python環境):
import pytz from datetime import datetime now = datetime.now() # 這是一個navie型別的時間 utc_timezone = pytz.timezone("UTC") # 定義UTC的時區物件 utc_now = now.astimezone(utc_timezone) # 將當前的時間轉換為UTC時區的時間 >> ValueError: astimezone() cannot be applied to a naive datetime # 會丟擲一個異常,原因就是因為navie型別的時間不能呼叫astimezone方法now = now.replace(tzinfo=pytz.timezone('Asia/Shanghai')) utc_now = now.astimezone(utc_timezone) # 這時候就可以正確的轉換。
replace方法:
可以將一個時間的某些屬性進行更改。