1. 程式人生 > >050:navie時間和aware時間詳解

050:navie時間和aware時間詳解

navie時間和aware時間:

什麼是navie時間?什麼是aware時間?

  1. navie時間:不知道自己的時間表示的是哪個時區的。也就是不知道自己幾斤幾兩。比較幼稚。
  2. 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方法:

可以將一個時間的某些屬性進行更改。