django比较时间字段

时间:2018-09-30 04:15:10

标签: python django time comparison

我正在尝试比较两个日期字段的时间。这是我在做什么。我打印时的输出。我可以看到它是相同的,但是比较结果是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

     

错误

谢谢

2 个答案:

答案 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 zonedatetime 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的更多信息。