如何解决python中的日期时间比较问题

2024-10-06 15:23:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是将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


Tags: 数据函数jsondatetimetime时间startnow
1条回答
网友
1楼 · 发布于 2024-10-06 15:23:15

不应使用datetime.replace更改datetime实例的时区。它不智能,除了UTC这样的简单时区之外,无法处理任何事情。使用datetime.astimezone将现有的aware datetime转换为另一个时区,或者使用tz.localize将时区添加到一个原始的datetime实例

但实际上,如果start_datetime已经有一个时区,您不需要更改它的时区以使其与dtnow相比较。来自两个不同时区的日期时间仍然具有可比性。只有天真和清醒的日期时间是不可比的

相关问题 更多 >