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