将 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 似乎提供了您回答该问题所需的信息。但是我会添加一个完整的工作示例。使用 pytz
和 datetime
:
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")
我有一个像 "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 似乎提供了您回答该问题所需的信息。但是我会添加一个完整的工作示例。使用 pytz
和 datetime
:
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")