我正在尝试比较两个日期字段的时间。这是我在做什么。我打印时的输出。我可以看到它是相同的,但是比较结果是False
!任何指示我做错了什么?
for appt in appointment_detail:
print(appt['start_time'])
print(slot_time)
print(slot_time == appt['start_time'])
结果:
2018-09-22 11:00:00 + 00:00
2018-09-22 11:00:00
错误
谢谢
答案 0 :(得分:1)
由于一个DateTime是 时区感知 ,而另一个不是,
要比较或检查等效性,必须将两者都转换为标准单位/格式
在这里,我要删除两个日期时间的时区信息。
wo_tz_slot_time = slot_time.replace(tzinfo=None)
wo_tz_appt_start_time = appt['start_time'].replace(tzinfo=None)
print(wo_tz_slot_time == wo_tz_appt_start_time)
答案 1 :(得分:0)
您将datetime with time zone
与datetime that unaware about time zone
进行比较,可以将时区添加到不知道的日期时间,例如下面所示:
import pytz
from datetime import datetime
time_zone_str = '2018-09-22 11:00:00+00:00'
date_time_str = '2018-09-22 11:00:00'
time_zone = datetime.strptime(''.join(time_zone_str.rsplit(':', 1)), '%Y-%m-%d %H:%M:%S%z')
date_time = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S')
date_time_with_time_zone = pytz.utc.localize(date_time)
print(date_time_with_time_zone == time_zone)
有关python timezone的更多信息。