Python之深入解析優(yōu)秀的時(shí)間格式轉(zhuǎn)換工具Delorean
一、前言
DeLorean 是一個(gè) Python 的第三方模塊,基于 pytz 和 dateutil 開(kāi)發(fā)的,用于處理 Python 中日期時(shí)間的格式轉(zhuǎn)換。
由于時(shí)間轉(zhuǎn)換是一個(gè)足夠微妙的問(wèn)題,DeLorean 希望為移位、操作和生成日期時(shí)間提供一種更干凈、更省事的解決方案。比如,實(shí)例化字符串形式的時(shí)間對(duì)象,Delorean 只需要 parse 指定字符串,不需要聲明其格式就可以進(jìn)行轉(zhuǎn)換。
二、準(zhǔn)備
① Python 安裝
在 windows 上安裝 Python:
下載 Python 的最新版本:訪問(wèn)鏈接 Python 官網(wǎng),在 Windows 操作系統(tǒng)上安裝 Python 3.10.0,大家也可以自行選擇最新版的下載。
進(jìn)入下一個(gè)頁(yè)面后,拉到最下面,選擇 Windows embeddable package (64-bit) 下載:
雙擊下載完成的應(yīng)用程序,記得一定要勾選 ADD Python 3.7 to PATH,否則 cmd 無(wú)法運(yùn)行 Python,然后選擇 Install Now 進(jìn)行安裝,默認(rèn)會(huì)安裝 pip,而且將安裝到 C 盤(pán)(推薦)。如果希望換一個(gè)盤(pán)安裝,可以點(diǎn)擊 Customize installation 在里面選擇其他的盤(pán)。
在 macOS 上安裝 Python:
其實(shí) macOS 上是默認(rèn)安裝了 Python 的,只不過(guò)版本是 Python2.7,其相對(duì)于現(xiàn)在的 Python 3 缺少了很多特性,而且速度也比 Python 3 慢,因此還是建議大家裝 Python 3。
同樣地,下載 Python 的最新版本,訪問(wèn)鏈接:Python 官網(wǎng),在 macOS 操作系統(tǒng)上安裝 Python 3.7.4,大家也可以自行選擇最新版的下載。
進(jìn)入下一個(gè)頁(yè)面后,拉到最下面,選擇 macOS 64-bit universal2 installer 下載:
下載完成后得到一個(gè) pkg 文件,雙擊打開(kāi),按照指示步驟進(jìn)行安裝即可。
② 安裝依賴
請(qǐng)選擇以下任一種方式輸入命令安裝依賴:
Windows 環(huán)境打開(kāi) Cmd (開(kāi)始 - 運(yùn)行 - CMD);
MacOS 環(huán)境打開(kāi) Terminal (command + 空格輸入 Terminal);
如果使用的是 VSCode 編輯器或 Pycharm,可以直接使用界面下方的 Terminal。
pip install Delorean
1
三、Delorean 基礎(chǔ)使用
輕松獲取當(dāng)前時(shí)間:
from delorean import Delorean d = Delorean() print(d) # Delorean(datetime=datetime.datetime(2021, 10, 6, 9, 5, 57, 611589), timezone='UTC')
1
2
3
4
5
將 datetime 格式的時(shí)間轉(zhuǎn)化為 Delorean:
import datetime from delorean import Delorean d = Delorean() print(d) d = Delorean(datetime=datetime.datetime(2018, 5, 10, 8, 52, 23, 560811), timezone='UTC') # 這里默認(rèn)的是UTC時(shí)間 print(d) # Delorean(datetime=datetime.datetime(2021, 10, 6, 9, 5, 57, 611589), timezone='UTC') # Delorean(datetime=datetime.datetime(2018, 5, 10, 8, 52, 23, 560811), timezone='UTC')
1
2
3
4
5
6
7
8
9
10
轉(zhuǎn)換為國(guó)內(nèi)時(shí)區(qū):
import datetime from delorean import Delorean d = Delorean(datetime=datetime.datetime(2018, 5, 10, 8, 52, 23, 560811), timezone='UTC') d = d.shift("Asia/Shanghai") print(d) # Delorean(datetime=datetime.datetime(2018, 5, 10, 16, 52, 23, 560811), timezone='Asia/Shanghai')
1
2
3
4
5
6
7
輸出為 datetime、date 也不在話下:
import datetime from delorean import Delorean d = Delorean(datetime=datetime.datetime(2018, 5, 10, 8, 52, 23, 560811), timezone='UTC') d = d.shift("Asia/Shanghai") print(d.datetime) print(d.date) # 2018-05-10 16:52:23.560811+08:00 # 2018-05-10
1
2
3
4
5
6
7
8
9
查看無(wú)時(shí)區(qū)時(shí)間及時(shí)間戳:
import datetime from delorean import Delorean d = Delorean(datetime=datetime.datetime(2018, 5, 10, 8, 52, 23, 560811), timezone='UTC') d = d.shift("Asia/Shanghai") print(d.epoch) print(d.naive) # 1525942343.560811 # 2018-05-10 08:52:23.560811
1
2
3
4
5
6
7
8
9
用 unix 時(shí)間戳初始化 Delorean:
from delorean import epoch d = epoch(1357971038.102223).shift("Asia/Shanghai") print(d) # Delorean(datetime=datetime.datetime(2013, 1, 12, 14, 10, 38, 102223), timezone='Asia/Shanghai')
1
2
3
4
Delorean 支持 timedelta 的時(shí)間加減法。Delorean 可以使用 timedelta 進(jìn)行加減,得到一個(gè) Delorean 對(duì)象:
import datetime from delorean import Delorean d = Delorean(datetime=datetime.datetime(2018, 5, 10, 8, 52, 23, 560811), timezone='UTC') d = d.shift("Asia/Shanghai") print(d) d2 = d + datetime.timedelta(hours=2) print(d2) d3 = d - datetime.timedelta(hours=3) print(d3) # Delorean(datetime=datetime.datetime(2018, 5, 10, 16, 52, 23, 560811), timezone='Asia/Shanghai') # Delorean(datetime=datetime.datetime(2018, 5, 10, 18, 52, 23, 560811), timezone='Asia/Shanghai') # Delorean(datetime=datetime.datetime(2018, 5, 10, 13, 52, 23, 560811), timezone='Asia/Shanghai')
1
2
3
4
5
6
7
8
9
10
11
12
13
四、Delorean 高級(jí)使用
通常情況下不關(guān)心有多少微妙或者多少秒,因此 Delorean 提供了非常方便的過(guò)濾方式:
from delorean import Delorean d = Delorean() print(d) # Delorean(datetime=datetime.datetime(2019, 3, 14, 4, 0, 50, 597357), timezone='UTC') d.truncate('second') # Delorean(datetime=datetime.datetime(2019, 3, 14, 4, 0, 50), timezone='UTC') d.truncate('hour') # Delorean(datetime=datetime.datetime(2019, 3, 14, 4, 0), timezone='UTC') d.truncate('month') # Delorean(datetime=datetime.datetime(2019, 3, 1, 0, 0), timezone='UTC') d.truncate('year') # Delorean(datetime=datetime.datetime(2019, 1, 1, 0, 0), timezone='UTC')
1
2
3
4
5
6
7
8
9
10
11
12
13
另外,datetime 格式的字符串處理的時(shí)候轉(zhuǎn)換需要標(biāo)明各種各樣的格式,在 Delorean 直接 parse 就可以了:
from delorean import parse parse("2011/01/01 00:00:00 -0700") # Delorean(datetime=datetime.datetime(2011, 1, 1, 0, 0), timezone=pytz.FixedOffset(-420)) parse("2018-05-06") # Delorean(datetime=datetime.datetime(2018, 6, 5, 0, 0), timezone='UTC')
1
2
3
4
5
Python Windows
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。