dateutil.parser.parse正在解析'0001'为2001.如何解决这个问题只能将其读作0001

时间:2015-06-17 14:36:05

标签: python python-2.7

from datetime import datetime
import dateutil.parser

date = '0001-01-01T00:00:00+02:00'
parsed_date = dateutil.parser.parse(date)
year = parsed_date.year
print(year)
>>> 2001

所需输出:0001

任何想法???

1 个答案:

答案 0 :(得分:4)

调用dateutil.parser.parse时,您还可以指定参数" parseinfo" (see here)。这是一个在解析日期时定义某些行为的对象,包括日期的处理方式。它有一个" convertyear"方法。

通过覆盖该方法,您可以更改默认行为(documented here)以实现您尝试执行的操作。以下是使用此对象稍微更改的代码版本:

from datetime import datetime
import dateutil.parser

class NoYearHandlingParserInfo(dateutil.parser.parserinfo):
     def convertyear(self, year):
         return int(year)

date = '0001-01-01T00:00:00+02:00'
parsed_date = dateutil.parser.parse(date, parserinfo=NoYearHandlingParserInfo())
year = parsed_date.year
print(year)

给出" 1"的正确输出。如果你真的需要文字0001,你可以像这样填充整数:

print('{:04d}'.format(year))