使用dateutil.parse解析不完整的日期

时间:2018-12-04 15:08:53

标签: python date

是否可以使用dateutil库解析不完整的日期而不获取当前日期或设置默认日期?

dt = parser.parse(search, dayfirst=True).date()

例如,解析10/02将返回dt.month = 02和dt.day =10。是否有办法让它返回dt.year = None或类似?还是要事先检查提供的日期不包含年份?

1 个答案:

答案 0 :(得分:3)

  

...没有获取当前日期或设置默认日期?

我认为您的意思是没有得到当前的。答案:不,不可能。 datetime.datetimedatetime.date必须包括整数年份。这是不能商量的。

您当然可以在输入中指定年份,或在之后进行更改:

from dateutil import parser

search = '10/02'
dt1 = parser.parse(search, dayfirst=True).date()            # datetime.date(2018, 2, 10)
dt2 = parser.parse(search + '/2017', dayfirst=True).date()  # datetime.date(2017, 2, 10)
dt1 = dt1.replace(year=2016)                                # datetime.date(2016, 2, 10)
  

还是要事先检查提供的日期不包含年份?

我不认为有任何功能可以检查您是否在字符串中提供了一年。您可能需要为此编写自定义测试。 parser.parse将与您所拥有的配合,并尝试填补所有空白。