如何确定一个日期是否在另一个日期之前

23

我有一个格式为“2011-06-24”的日期,以及一个同样格式的其他日期字符串列表。对于列表中的每个字符串,我想确定该日期是否与“2011-06-24”相比是过去的日期。在Python中有没有一种简单的方法可以做到这一点?


3
http://docs.python.org/library/datetime.html - tMC
4个回答

53
>>> "2011-06-24" > "2010-06-23"
True

>>> "2011-06-24" > "2012-06-25"
False

这显然是错误的... "2000" > "1900" -> true, "2000" > "19000" -> true. - Bryan Grace
@BryanGrace 这个答案基于原帖假设这两个日期是ISO格式,显然并不适用于任意字符串。 - Paolo Moretti
OP从未提到过ISO(YYYY-MM-DD)。那是你的假设。这种格式可以轻松地被解释为(空格-空格-空格)。 - Bryan Grace
1
@BryanGrace 这不是我的假设,而是问题中提到的:我有一个日期格式为“2011-06-24”,还有一个同样格式的其他日期字符串列表。 无论如何,SO 是社区驱动的,所以如果你认为答案有误,可以添加你自己的回答或编辑这个回答。 - Paolo Moretti

12

这里的问题是什么?由于日期显然采用ISO格式,因此您可以将其视为字符串进行标准比较...


3
为什么这不是显而易见的?我原以为日期翻转会成为一个问题,但事实并非如此。谢谢。 - coffee
1
为什么这个回答仍然被接受?与线程中其他可用的回答相比,这是一个非常低质量的回答。 - Display name

7

抱歉,无意义的答案。这里不需要将ISO表示法中的日期转换为datetime实例。 - user2665694
2
这个可以工作,但在这种特定情况下,将其作为字符串进行比较更容易且同样有效。 - Mark Ransom

0

如果你想使用datetime的时间部分,那么可以放心,同样的简单字符串比较也适用于时间字符串(在Python 3.8中测试过):

assert("07:20:18.273" == "07:20:18.273")
assert("07:20:18.274" > "07:20:18.273")
assert("07:20:18.273" < "07:20:18.274")
assert("07:20:17.273" < "07:20:18.273")
assert("07:19:18.273" < "07:20:18.273")
assert("06:20:18.273" < "07:20:18.273")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接