将 Y-m-dTH:M:Sz 转换为日期时间以进行比较 [重复]
Posted
技术标签:
【中文标题】将 Y-m-dTH:M:Sz 转换为日期时间以进行比较 [重复]【英文标题】:Convert Y-m-dTH:M:Sz to datetime to compare [duplicate] 【发布时间】:2020-05-06 19:37:38 【问题描述】:我有一个类似"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()
时区感知?
【问题讨论】:
【参考方案1】:正如我所说,该链接似乎提供了问题所需的信息。但是,我将添加一个完整的工作示例。使用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")
【讨论】:
为什么是pytz.utc
而不是datetime.timezone.utc
?
这也是一个有效的答案,我会编辑添加它。以上是关于将 Y-m-dTH:M:Sz 转换为日期时间以进行比较 [重复]的主要内容,如果未能解决你的问题,请参考以下文章