gpt4 book ai didi

Python日期时间与<比较返回错误结果

转载 作者:行者123 更新时间:2023-12-01 02:21:05 25 4
gpt4 key购买 nike

我正在创建简单的 RSS 阅读器。上次读取最新条目的存储日期 newest_entry_datetime然后,当再次阅读 channel 时,我将进入时间与 newest_entry_datetime 进行比较与 <符号,因为我读到 Python 足够聪明,可以识别和比较日期时间。

当时间部分发生变化时,它会在同一天工作,但在第二天,最新日期将按旧日期执行。

import datetime
import locale

#locale.setlocale(locale.LC_ALL, 'English_United States.1252')

newest_entry_datetime = 'Thu, 21 Dec 2017 16:02:03 CET'
entry_published = 'Fri, 22 Dec 2017 08:19:15 CET'

#dt_newest = datetime.datetime.strptime (newest_entry_datetime, "%a, %d %b %Y %H:%M:%S %Z" )

if (entry_published <= newest_entry_datetime):
print('Entry date is older')
else:
print('Entry date is NEW')

使用这样的代码我得到结果:"Entry date is older"这是错误的。

第二个想法是将日期戳转换为日期时间,但我得到:

ValueError: time data 'Thu, 21 Dec 2017 16:02:03 CET' does not match format '%a, %d %b %Y %H:%M:%S %Z'

即使我将语言环境更改为美国。

不知道如何正确地做到这一点。你能帮忙吗?

最佳答案

感谢 Anton vBR 的回答,CET 无法识别,我刚刚删除了这部分字符串,因为 feed 始终具有相同的时区。

可以运行并给出正确结果的最终代码在这里。

import datetime
import locale

locale.setlocale(locale.LC_ALL, 'English_United States.1252')

newest_entry_datetime = 'Thu, 21 Dec 2017 16:02:03 CET'
entry_published = 'Fri, 22 Dec 2017 08:19:15 CET'

newest_entry_datetime = newest_entry_datetime.rsplit(" ", maxsplit=1)[0]
entry_published = entry_published.rsplit(" ", maxsplit=1)[0]
dt_newest = datetime.datetime.strptime (newest_entry_datetime, "%a, %d %b %Y %H:%M:%S" )
st_entry = datetime.datetime.strptime (entry_published, "%a, %d %b %Y %H:%M:%S" )

if (st_entry <= dt_newest):
print('Entry date is older')
else:
print('Entry date is NEW')

结果是:“输入日期是新的”,正如预期的那样。

关于Python日期时间与<比较返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47938194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com