python中如何利用datetime模塊進行不同時區的轉換?


1、需要使用到datetime模塊中的 datetime,timedelta,timezone

from datetime import datetime,timezone,timedelta # 導模塊

2、datetme實例的replace()方法可以給實例添加時區信息tzinfo,並返回一個新的datetime實例

given_datetime = datetime.strptime('2022-03-31 16:00:01','%Y-%m-%d %H:%M:%S') # 指定時間datetime.datetime(2022, 3, 31, 16, 0, 1)

given_datetime_by_tzinfo = given_datetime.replace(tzinfo=timezone.utc) # 返回tzinfo屬性為utc時間的datetime新實例對象:datetime.datetime(2022, 3, 31, 16, 0, 1, tzinfo=datetime.timezone.utc)

3、datetime實例的astimezone()方法可以轉換為任意指定的時區

將utc時間轉換為東八區時間:

given_datetime_by_tzinfo.astimezone(timezone(timedelta(hours=8))) # 將給定的utc時間轉換為東八區時間(Asia/Shanghai):datetime.datetime(2022, 4, 1, 0, 0, 1, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))

4、utc時間如何轉換為本地時間

from datetime import datetime, timedelta


def utc_to_local(utc_str, timezone=8):
    '''
    utc時間轉本地時間
    :param utc_str: utc時間字符串
    :param timezone: 時區(默認東八區)
    :return:
    '''
    try:
        given_datetime = datetime.strptime(utc_str, '%Y-%m-%dT%H:%M:%SZ')
    except:
        given_datetime = datetime.strptime(utc_str, '%Y-%m-%dT%H:%M:%S.%fZ')
    local_datetime = given_datetime + timedelta(hours=timezone)
    return datetime.strftime(local_datetime, '%Y-%m-%d %H:%M:%S')


print(utc_to_local("2012-03-20T16:00:00Z"))  # 2012-03-21 00:00:00
print(utc_to_local("2020-03-21T17:49:42.319772Z"))  # 2020-03-22 01:49:42

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM