亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中pytz指的是什么

發布時間:2020-11-21 11:38:09 來源:億速云 閱讀:869 作者:小新 欄目:編程語言

這篇文章主要介紹python中pytz指的是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

pytz模塊常用于時區的轉換,常常配合datetime一起使用。我們知道datetime除了data方法生成的時間是沒有時區概念,其他如time、datetime等都是有時區概念,即指定了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>)

時區轉換

·pytz.country_timezones(‘國家代碼’):此方法可以拿到某個國家的時區名列表。

>>>(pytz.country_timezones('cn')
['Asia/Shanghai', 'Asia/Urumqi']

·pytz.timezone(‘時區名’):此方法能獲取一個tzinfo對象,該對象可在datetime生成時間中以參數的形式放入,即可生成對應時區的時間。

>>>utc = pytz.timezone('UTC')
>>>datetime.datetime.now(tz=utc)
2019-05-10 10:53:46.000929+00:00

實際上,現在時間為18:53:46

·查看有哪些時區

pytz有all_timezones、common_timezones這兩個屬性來查看有哪些時區。

from pytz import all_timezones,common_timezones

·時間按時區轉換

這要用到datetime模塊的astimezone方法來實現。如下所示,開始生成本地時間,然后在轉成utc時間。

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

對于有采用了夏時制的要使用時區對象的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的縮寫,網上查一查意思是本地平均時。而且時間是+8:06,說明與UTC的時差不是8個小時整。下面有一個問題是,當我們用pytz.timezone('Asia/Shanghai') 生成的時區是LMT,而非標準的CST(就是Central Standard Time的意思)。那么這會造成什么后果呢?下面來展示下:

  
<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>)

由上述可以發現,剛開始由datetime.datetime()生成的時間是LMT,接下來我將其轉換為UTC時區的時間,最后又轉回來,我們可以發現,現在的時間又變成了CST標準。而這兩個標準,就直接導致其相差了6分鐘。

下面我們可以用時區對象的localize方法,將LMT準換為CST,使其統一。

>>>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>)

所以我的建議是生成帶時區的時間時,一定要使用timezone.localize()來生成。不要在時間對象的構造函數中傳入tzinfo的方式來實現。

以上是python中pytz指的是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武威市| 鄂尔多斯市| 泸水县| 望奎县| 大方县| 花垣县| 缙云县| 万荣县| 宕昌县| 綦江县| 五原县| 罗定市| 吉林省| 揭阳市| 汉沽区| 胶南市| 马山县| 湘西| 高碑店市| 伊宁市| 锡林郭勒盟| 盐城市| 乐陵市| 武鸣县| 南溪县| 同德县| 德江县| 梁平县| 天等县| 枣阳市| 开封县| 静安区| 琼中| 平乐县| 武夷山市| 霍林郭勒市| 宝山区| 延长县| 安陆市| 临潭县| 南通市|