dateutil.parser.parse 正在将 '0001' 解析为 2001。我该如何解决这个问题以仅将其读取为 0001

use*_*267 5 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
Run Code Online (Sandbox Code Playgroud)

所需输出:0001

任何的想法???

won*_*0lt 5

调用时dateutil.parser.parse,您还可以指定参数“parseinfo”(请参阅此处)。这是一个对象,它在解析日期时定义某些行为,包括如何处理日期。它有一个“ convertyear ”方法。

通过覆盖该方法,您可以更改默认行为(此处记录)以实现您要执行的操作。这是使用此对象的代码的略微更改版本:

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)
Run Code Online (Sandbox Code Playgroud)

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

print('{:04d}'.format(year))
Run Code Online (Sandbox Code Playgroud)