050:navie時間和aware時間詳解

navie時間和aware時間:

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

  1. navie時間:不知道本身的時間表示的是哪一個時區的。也就是不知道本身幾斤幾兩。比較幼稚。
  2. aware時間:知道本身的時間表示的是哪一個時區的。也就是比較清醒。

pytz庫:

專門用來處理時區的庫。這個庫會常常更新一些時區的數據,不須要咱們擔憂。而且這個庫在安裝Django的時候會默認的安裝。若是沒有安裝,那麼能夠經過pip install pytz的方式進行安裝。app

astimezone方法:

將一個時區的時間轉換爲另一個時區的時間。這個方法只能被aware類型的時間調用。不能被navie類型的時間調用。示例代碼以下(Linux環境下進入python環境):spa

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方法:

能夠將一個時間的某些屬性進行更改。code

相關文章
相關標籤/搜索