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