Python+Delorean實現(xiàn)時間格式智能轉(zhuǎn)換
1.介紹
DeLorean是一個Python的第三方模塊,基于 pytz 和 dateutil 開發(fā),用于處理Python中日期時間的格式轉(zhuǎn)換。
由于時間轉(zhuǎn)換是一個足夠微妙的問題,DeLorean希望為移位、操作和生成日期時間提供一種更干凈、更省事的解決方案。比如,實例化字符串形式的時間對象,Delorean只需要 parse 指定字符串,不需要聲明其格式就可以進(jìn)行轉(zhuǎn)換。
至于 Delorean 這個模塊名稱的由來,Delorean 是電影《回到未來》里的那輛極為炫酷的鷗翼汽車,采用這部電影里的非常具有代表性的汽車的名字作為庫名,作者估計也是想表達(dá)使用這個庫能讓你在時空里任意遨游,沒有掣肘。
這個模塊最讓我感到智能的是,它能自動識別字符串的時間格式,轉(zhuǎn)換為 Delorean 對象,而且這個 Delorean 對象和 Datetime 對象是相通的:
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')
下面就來介紹一下它的基本使用方法。
2.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip?install?Delorean
3.Delorean基礎(chǔ)使用
輕松獲取當(dāng)前時間:
from?delorean?import?Delorean d = Delorean() print(d) # Delorean(datetime=datetime.datetime(2021, 10, 6, 9, 5, 57, 611589), timezone='UTC')
將datetime格式的時間轉(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時間 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')
轉(zhuǎn)換為國內(nèi)時區(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')
輸出為 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
查看時間戳及UTC時間:
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
用unix時間戳初始化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')
Delorean支持timedelta的時間加減法。Delorean可以使用timedelta進(jìn)行加減,得到一個Delorean對象:
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')
4.Delorean高級使用
通常情況下我們不關(guān)心有多少微妙或者多少秒,因此Delorean提供了非常方便的過濾方式:
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')
另外,datetime格式的字符串處理的時候轉(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')
以上就是Python+Delorean實現(xiàn)時間格式智能轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Python Delorean時間格式轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pandas數(shù)據(jù)合并之pd.concat()用法詳解
本文主要介紹了pandas數(shù)據(jù)合并之pd.concat()用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Pycharm無法打開雙擊沒反應(yīng)的問題及解決方案
這篇文章主要介紹了Pycharm無法打開,雙擊沒反應(yīng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08