這篇文章主要介紹python中pytz指的是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè)|網(wǎng)頁維護(hù)|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋崗?fù)?/a>等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身策劃品質(zhì)網(wǎng)站。
pytz模塊常用于時(shí)區(qū)的轉(zhuǎn)換,常常配合datetime一起使用。我們知道datetime除了data方法生成的時(shí)間是沒有時(shí)區(qū)概念,其他如time、datetime等都是有時(shí)區(qū)概念,即指定了tzinfo信息。
>>> import datetime >>> datetime.datetime.now(tz) datetime.datetime(2009, 2, 21, 15, 12, 33, 906000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>) >>> datetime.datetime(2009, 2, 21, 15, 12, 33, tzinfo=tz) datetime.datetime(2009, 2, 21, 15, 12, 33, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>) >>> datetime.date(2009, 2, 21, tzinfo=tz) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tzinfo' is an invalid keyword argument for this function >>> datetime.time(15, 12, 33, tzinfo=tz) datetime.time(15, 12, 33, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>)
時(shí)區(qū)轉(zhuǎn)換
·pytz.country_timezones(‘國家代碼’):此方法可以拿到某個(gè)國家的時(shí)區(qū)名列表。
>>>(pytz.country_timezones('cn') ['Asia/Shanghai', 'Asia/Urumqi']
·pytz.timezone(‘時(shí)區(qū)名’):此方法能獲取一個(gè)tzinfo對象,該對象可在datetime生成時(shí)間中以參數(shù)的形式放入,即可生成對應(yīng)時(shí)區(qū)的時(shí)間。
>>>utc = pytz.timezone('UTC') >>>datetime.datetime.now(tz=utc) 2019-05-10 10:53:46.000929+00:00
實(shí)際上,現(xiàn)在時(shí)間為18:53:46
·查看有哪些時(shí)區(qū)
pytz有all_timezones、common_timezones這兩個(gè)屬性來查看有哪些時(shí)區(qū)。
from pytz import all_timezones,common_timezones
·時(shí)間按時(shí)區(qū)轉(zhuǎn)換
這要用到datetime模塊的astimezone方法來實(shí)現(xiàn)。如下所示,開始生成本地時(shí)間,然后在轉(zhuǎn)成utc時(shí)間。
import datetime import pytz utc = pytz.timezone('UTC') now_time = datetime.datetime.now() utc_time = now_time.astimezone(tz=utc) print(now_time,utc_time)
2019-05-10 19:02:53.499513 2019-05-10 11:02:53.499513+00:00
對于有采用了夏時(shí)制的要使用時(shí)區(qū)對象的normzlize方法來處理,如下所示:
import datetime import pytz utc = pytz.timezone('UTC') now_time = datetime.datetime.now() utc_time = utc.normalize(now_time.astimezone(tz=utc)) print(now_time,utc_time)
2019-05-10 19:08:25.286690 2019-05-10 11:08:25.286690+00:00
·LMT問題
LMT,這是Local Mean Time的縮寫,網(wǎng)上查一查意思是本地平均時(shí)。而且時(shí)間是+8:06,說明與UTC的時(shí)差不是8個(gè)小時(shí)整。下面有一個(gè)問題是,當(dāng)我們用pytz.timezone('Asia/Shanghai') 生成的時(shí)區(qū)是LMT,而非標(biāo)準(zhǔn)的CST(就是Central Standard Time的意思)。那么這會(huì)造成什么后果呢?下面來展示下:
<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD> >>>d = datetime.datetime(2019,5,10,19,12,30,tzinfo=tz) >>>d datetime.datetime(2019, 5, 10, 19, 12, 30, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>) >>>d = d.astimezone(utc) >>>d datetime.datetime(2019, 5, 10, 11, 6, 30, tzinfo=<UTC>) >>>d.astimezone(tz) datetime.datetime(2019, 5, 10, 19, 6, 30, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
由上述可以發(fā)現(xiàn),剛開始由datetime.datetime()生成的時(shí)間是LMT,接下來我將其轉(zhuǎn)換為UTC時(shí)區(qū)的時(shí)間,最后又轉(zhuǎn)回來,我們可以發(fā)現(xiàn),現(xiàn)在的時(shí)間又變成了CST標(biāo)準(zhǔn)。而這兩個(gè)標(biāo)準(zhǔn),就直接導(dǎo)致其相差了6分鐘。
下面我們可以用時(shí)區(qū)對象的localize方法,將LMT準(zhǔn)換為CST,使其統(tǒng)一。
>>>datetime.datetime(2019,5,10,20,30,32,tzinfo=tz) datetime.datetime(2019, 5, 10, 20, 30, 32, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>) >>>tz.localize(datetime.datetime(2019,5,10,20,30,32)) datetime.datetime(2019, 5, 10, 20, 30, 32, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
所以我的建議是生成帶時(shí)區(qū)的時(shí)間時(shí),一定要使用timezone.localize()來生成。不要在時(shí)間對象的構(gòu)造函數(shù)中傳入tzinfo的方式來實(shí)現(xiàn)。
以上是python中pytz指的是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前題目:python中pytz指的是什么
URL分享:http://bm7419.com/article18/gocjdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、響應(yīng)式網(wǎng)站、服務(wù)器托管、商城網(wǎng)站、網(wǎng)站內(nèi)鏈、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)