Python:我怎样才能看出今年某个月和今天是否已经过去了?

时间:2014-02-16 08:41:16

标签: python date

今天是16 Feb。我有一个字符串23 Mar。如何查看我的字符串是在当天之前还是之后?

我有一个附有上次修改日期的文件列表。他们只有一天一个月,没有一年。如果该日期已于今年(例如16/01)过去,则该年份应为2014年,如果不是(例如30/12),则该年份应为2013年。

1 个答案:

答案 0 :(得分:3)

使用datetime.datetime.strptime()将字符串解析为datetime对象,但由于您的日期字符串没有附加年份,请将当前年份附加到其中:

import datetime

today = datetime.date.today()
yourdate = datetime.datetime.strptime(inputstring, '%d %b')
yourdate = yourdate.date().replace(year=today.year)

if yourdate >= today:
    # date not before today, attach *last* year
    yourdate = yourdate.replace(year=today.year - 1)

我在这里也将datetime对象转换为date对象,因为我们只需要讨论日期。

这假设您的日期字符串的格式始终为月份缩写的英文格式。

演示:

>>> import datetime
>>> inputstring = '23 Mar'
>>> today = datetime.date.today()
>>> yourdate = datetime.datetime.strptime(inputstring, '%d %b')
>>> yourdate = yourdate.date().replace(year=today.year)
>>> yourdate
datetime.date(2014, 3, 23)
>>> yourdate >= today
True