溫馨提示×

溫馨提示×

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

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

Python時間操作之pytz模塊如何使用

發(fā)布時間:2022-06-14 11:41:48 來源:億速云 閱讀:1391 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Python時間操作之pytz模塊如何使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python時間操作之pytz模塊如何使用”吧!

    1. pytz 模塊概述

    什么是 pytz 模塊

    pytz 模塊是依賴Olson tz數(shù)據(jù)庫導(dǎo)入的,它支持直接使用時區(qū)名進行時間計算

    pytz 模塊涉及時區(qū),因此其也指定tzinfo信息(詳情可見datetime.tzinfo)

    pytz 模塊通常與datetime模塊結(jié)合一起使用,返回具體的時間名

    pytz 模塊可以解決夏令時結(jié)束時不明確的問題

    重要說明

    pytz 模塊支持大多數(shù)的時區(qū)計算,使用IANA的數(shù)據(jù)接口,CLDR(Unicode 語言環(huán)境)項目提供翻譯

    本地還需要按照依賴是時區(qū)映射表tzdata數(shù)據(jù)庫(pip install tzdata)

    國家時區(qū)映射關(guān)系表

    國家/城市代碼映射表,pytz庫中存儲在_CountryTimezoneDict()字典中

    Python時間操作之pytz模塊如何使用

    我們可以通過 pytz.country_timezones常量來獲取code,timezon

    <pytz._CountryTimezoneDict object at 0x00000256FBE52E30>

    pytz 模塊使用方法

    由于pytz是第三方庫,因此我們在使用前需要使用pip進行下載其依賴庫

    pip install pytz

    代碼中使用時,我們需要使用import來進行導(dǎo)入

    # 方式一:導(dǎo)入整個模塊
    import pytz
    
    # 方式二:導(dǎo)入具體的庫
    from pytz import timezone

    2. pytz 相關(guān)方法

    pytz 模塊包含國家碼查詢、時區(qū)名等方法

    創(chuàng)建本地化時間:

    方式一:pytz.timezone(tzname).localise()

    tz = pytz.timezone('US/Eastern')
    local_time =tz.localize(datetime.datetime(2022, 6, 13,23, 0, 0))
    print(local_time)

    方式二:local_time.astimezone(tzname)

    ast = local_time.astimezone(tz)

    方式三:tz.normzlize()處理夏令時

    nor = tz.normzlize(datetime.datetime(2022, 6, 13,23, 0, 0))

    時區(qū)名獲?。?/p>

    • 時區(qū)名各式化:pytz.timezone(tzname)

    • 獲取所有的時區(qū):pytz.country_timezones.values()

    • 獲取地區(qū)的代碼:pytz.country_timezones.keys()

    3. pytz 時區(qū)查詢

    根據(jù)pytz模塊相關(guān)方法,我們可以寫一個函數(shù)來實現(xiàn)場景:

    • 輸入一個城市:city,如"Simferopol"

    • 輸出城市的時區(qū)偏離量:如+3

    實現(xiàn)思路,大致如下:

    • 首先調(diào)用pytz.country_timezones.values()獲取到所有的時區(qū)timezones

    • 使用split()將時區(qū)的城市名進行分割形成列表city_list

    • 先在city_list.index[city]找到City_index

    • 然后根據(jù)City_index在timezones找到時區(qū)tzname

    • pytz.timezone(tzname)格式化,算出標(biāo)準(zhǔn)時間

    import pytz
    from datetime import datetime
    
    def timezon_city_gmt(city):
    
        timezons = sum(list(pytz.country_timezones.values()),[])
        cityList = [city.split("/")[1] for city in timezons]
        city_index = cityList.index(city)
        tz = pytz.timezone(timezons[city_index])
        gmt = "GMT" + str(datetime.now().astimezone(tz))[-6:]
    
        return gmt
        
    print(timezon_city_gmt("Simferopol"))
    ---
    GMT+03:00
    ---

    4. pytz 日期計算

    同理,我們?nèi)粘I钪懈鶕?jù)當(dāng)?shù)貢r間,算出對方所在時區(qū)的當(dāng)?shù)貢r間,思路與上述大致一樣。

    datetime.strptime()將時間字符串轉(zhuǎn)化成datetime對象

    import pytz
    from datetime import datetime
    
    def update_datetime_tz(olddatetime, city, formate):
        timezons = sum(list(pytz.country_timezones.values()), [])
        cityList = [city.split("/")[1] for city in timezons]
        city_index = cityList.index(city)
        tz = pytz.timezone(timezons[city_index])
        datetime_type = datetime.strptime(olddatetime, formate)
        newdatetime = datetime_type.astimezone(tz)
    
        return newdatetime.strftime(str(formate))
        
        
    print(update_datetime_tz("2022-06-13 12:46:03","Moscow","%Y-%m-%d %H:%M:%S")) 
    ---
    2022-06-13 07:46:03
    ---

    感謝各位的閱讀,以上就是“Python時間操作之pytz模塊如何使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python時間操作之pytz模塊如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI