我的目标是将datetime now与json提供给我的程序的另一个datetime进行比较。 比较两次数据,结果与实际情况不符
时区为tz = pytz.timezone('Europe/Athens')
,即UTC+3
json时间最初是字符串格式,处理后我将格式转换为datetime
"start_time": "2020-08-11T20:13:00+03:00"
,json数据
start_time = data.get('start_time')
start_datetime = dateutil.parser.parse(start_time), #datetime format
现在,在调用一个函数以检查哪个datetime大于另一个之后,使用
现在的日期是:
2020-08-11 14:51:21.713511+03:00
开始日期为:
2020-08-11 13:00:00+03:00
函数返回True
,这是错误的,因为开始日期时间不大于现在的日期时间
以下是函数:
def check_start_datetime_bigger_than_now(start_datetime):
tz = pytz.timezone('Europe/Athens')
dts = start_datetime.replace(tzinfo=tz)
dtnow = datetime.now(pytz.timezone('Europe/Athens'))
print(dts)
print(dtnow)
#compare the datetimes
if dts >= dtnow:
return True
else:
return False
有人能帮我弄清楚发生了什么吗
在比较之前,日期时间的打印将给出:
2020-08-11 20:13:00+01:35
2020-08-11 15:06:55.397784+03:00
为什么开始日期是+01:35
不应使用
datetime.replace
更改datetime
实例的时区。它不智能,除了UTC这样的简单时区之外,无法处理任何事情。使用datetime.astimezone
将现有的awaredatetime
转换为另一个时区,或者使用tz.localize
将时区添加到一个原始的datetime
实例但实际上,如果
start_datetime
已经有一个时区,您不需要更改它的时区以使其与dtnow
相比较。来自两个不同时区的日期时间仍然具有可比性。只有天真和清醒的日期时间是不可比的相关问题 更多 >
编程相关推荐