将 Y-m-dTH:M:Sz 转换为日期时间进行比较

Convert Y-m-dTH:M:Sz to datetime to compare

我有一个像 "2020-01-20T11:00:05-05:00" 这样的字符串,我想将它与 datetime.now() 进行比较,看看它是否大于它。

我想我需要使用 datetime.strptime(..., ...) 虽然我不知道如何处理时区位。

我该如何解决这个问题?

谢谢。

编辑: date_time = datetime.strptime("2020-01-20T11:00:05-05:00", "%Y-%m-%dT%H:%M:%S%z")。这行得通,但是现在当我比较它们时,我得到 TypeError: can't compare offset-naive and offset-aware datetimes.

EDIT2: 也许我需要让我的 datetime.now() 时区感知?

正如我所说,link 似乎提供了您回答该问题所需的信息。但是我会添加一个完整的工作示例。使用 pytzdatetime:

import pytz
from datetime import datetime

now = datetime.now(pytz.utc)
if now < datetime.strptime("2020-01-21T11:00:05-05:00", "%Y-%m-%dT%H:%M:%S%z"):
    print("A")
else:
    print("B")

输出:

B

将日期更改为“10”以确保时间为 True:

if now < datetime.strptime("2020-01-10T11:00:05-05:00", "%Y-%m-%dT%H:%M:%S%z"):
    print("A")
else:
    print("B")

输出:

A

Jason Whitman 提到的另一个选项使用 datetime.timezone.utc 更改导入并使用它会起作用:

from datetime import datetime, timezone

now = datetime.now(timezone.utc)
if now < datetime.strptime("2020-01-21T11:00:05-05:00", "%Y-%m-%dT%H:%M:%S%z"):
    print("A")
else:
    print("B")