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

任何想法???

最佳答案

调用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))

关于python - dateutil.parser.parse正在将 '0001'解析为2001。我如何解决此问题以仅将其读取为0001?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30894736/

10-09 17:00