Python 如何比较不同时区的相同时间?

Python 如何比较不同时区的相同时间?,python,python-3.x,datetime,Python,Python 3.x,Datetime,我有两个不同时区的时间戳: date_1_str = '20200520090000' # GMT+2 date_2_str = '20 May 2020, 07:00' # UTC 我将它们转换为日期时间: 从日期时间导入日期时间 从dateutil导入 date_1=datetime.strptimedate_1_str,'%Y%m%d%H%m%S'。replacetzinfo=tz.tzoffset'GMT+2',0 date_2=datetime.strTimeDate_2_str,'

我有两个不同时区的时间戳:

date_1_str = '20200520090000' # GMT+2
date_2_str = '20 May 2020, 07:00' # UTC
我将它们转换为日期时间:

从日期时间导入日期时间 从dateutil导入 date_1=datetime.strptimedate_1_str,'%Y%m%d%H%m%S'。replacetzinfo=tz.tzoffset'GMT+2',0 date_2=datetime.strTimeDate_2_str,'%d%b%Y,%H:%M'。replacetzinfo=tz.tzoffset'UTC',0 之后,我将它们转换为本地时区进行比较:

date_1_=date_1.astimezonetz.tzlocal datetime.datetime2020,5,20,12,0,tzinfo=tzlocal date_2_=date_2.astimezonetz.tzlocal datetime.datetime2020,5,20,10,0,tzinfo=tzlocal 正如您所看到的,结果并不是我想要的,尽管在UTC的情况下,转换是正确的。转换后,两个对象都应该是datetime.datetime2020,5,20,10,0,tzinfo=tzlocal,因为我的时区是gmt+3,所以7.00 utc==10.00 gmt+3和9.00 gmt+2必须==10.00 gmt+3 我哪里错了?

在您的代码中都是0;如果相应地设置它们,则应获得正确的输出:

from datetime import datetime
from dateutil import tz

date_1_str = '20200520090000' # GMT+2
date_2_str = '20 May 2020, 07:00' # UTC
date_1 = datetime.strptime(date_1_str, '%Y%m%d%H%M%S').replace(tzinfo=tz.tzoffset('GMT+2', 2*3600))
date_2 = datetime.strptime(date_2_str, '%d %b %Y, %H:%M').replace(tzinfo=tz.tzoffset('UTC', 0))

# I'm on UTC+2, so the hour should stay the same:
date_1_ = date_1.astimezone(tz.tzlocal())
# datetime.datetime(2020, 5, 20, 9, 0, tzinfo=tzlocal())

# UTC hour should be +2:
date_2_ = date_2.astimezone(tz.tzlocal())
# datetime.datetime(2020, 5, 20, 9, 0, tzinfo=tzlocal())

你为什么说结果不是我想要的?你到底想要什么?@seven7e转换后,两个对象都应该是datetime.datetime2020,5,20,10,0,tzinfo=tzlocal,因为我的时区是gmt+3,所以7.00 utc==10.00 gmt+3和9.00 gmt+2必须是==10.00 gmt+3从哪里导入tz?@MrFuppes from dateutil导入tz@MrFuppes结果是相同的datetime.strTimeDate_1_str,“%Y%m%d%H%m%S”.replacetzinfo=tz.tzoffset'GMT+7200',0.astimezonetz.tzlocal=>datetime.datetime2020,5,20,12,0,tzinfo=tzlocal