簡介
「datetime」是 python 用來處理日期和時(shí)間的標(biāo)準(zhǔn)庫
功能點(diǎn)依次介紹
-
1、獲取當(dāng)前日期和時(shí)間
由上例可見,now 對象是 datetime 類型的,值為當(dāng)前的時(shí)間
-
2、構(gòu)造一個(gè) datetime 對象,并打印
上例中,使用
datetime(年,月,日,時(shí),分,秒,毫秒)
的方式進(jìn)行了構(gòu)造,所以打印出來也是對應(yīng)的
- 3、datetime 轉(zhuǎn) timestamp
先說明一下:
timestamp 一旦確定,那么 UTC 時(shí)間就確定了,轉(zhuǎn)換到任意時(shí)區(qū)的時(shí)間也是確定的,所以計(jì)算機(jī)存儲當(dāng)前時(shí)間是以 timestamp 方式表示的,因?yàn)槿蚋鞯氐挠?jì)算機(jī)在任意時(shí)刻的 timestamp 都是完全相同的(假定時(shí)間已經(jīng)校準(zhǔn))
所以說
時(shí)間戳 timestamp 的值和時(shí)區(qū)沒有關(guān)系,這就是為什么做前后端交互時(shí),廣泛使用timestamp 的原因
下面,請看 datetime 轉(zhuǎn) timestamp 的用法

如圖,很簡單,就是將 datetime 對象直接調(diào)用 timestamp方法即可
需要注意的是 timestamp 是浮點(diǎn)數(shù),當(dāng)有小數(shù)位時(shí),小數(shù)位表示的是毫秒數(shù)
-
4、timestamp 轉(zhuǎn) datetime
將時(shí)間戳轉(zhuǎn)換為 datetime ,那么只需要調(diào)用 datetime 模塊中的 fromtimestamp()方法即可
我們將步驟3的毫秒值利用一下,看下示例
很簡單,但是需要注意的是,上面的 timestamp 轉(zhuǎn)datetime 是根據(jù)本地時(shí)間進(jìn)行的轉(zhuǎn)化,而本地時(shí)間是指當(dāng)前操作系統(tǒng)設(shè)置的時(shí)區(qū)。不同地區(qū)不同國家的 相同的時(shí)間戳 timestamp 的轉(zhuǎn)化,是不一樣的,是根據(jù)時(shí)區(qū)設(shè)定的。
當(dāng)然,如果想要把時(shí)間戳 timestamp 轉(zhuǎn)換成標(biāo)準(zhǔn)時(shí)區(qū)(UTC+0:00),我們可以這樣做

-
5、str 轉(zhuǎn) datetime
一般情況下,我們會根據(jù)用戶輸入的時(shí)間 str 轉(zhuǎn)化成我們對應(yīng)的時(shí)間,這個(gè)時(shí)候就需要用到
str 轉(zhuǎn) datetime了
只需要用到 datetime 中的 strptime() 方法即可,但是前提是:需要一個(gè)日期和時(shí)間格式化的字符串
6、datetime 的加減
python 為我們提供了很方便的方式進(jìn)行日期的加減,其中核心的功能是聽過 datetime 模塊中的
timedelta 類提供的,通過 timedelta 的構(gòu)造方法 構(gòu)造出我們需要操作的時(shí)間,然后進(jìn)行運(yùn)算就可以了
請看示例

-
7、本地時(shí)間轉(zhuǎn)化成 UTC 時(shí)間
8、時(shí)區(qū)轉(zhuǎn)化
直接通過 datetime 對象 的replace 方法去替換 tzinfo 的時(shí)區(qū)
astimezone() 直接更改
總結(jié)
datetime表示的時(shí)間需要時(shí)區(qū)信息才能確定一個(gè)特定的時(shí)間,否則只能視為本地時(shí)間。
如果要存儲datetime,最佳方法是將其轉(zhuǎn)換為timestamp再存儲,因?yàn)閠imestamp的值與時(shí)區(qū)完全無關(guān)。




