Babel date_format将于2017年返回2016年

agu*_*ran 1 python babel

我正在尝试显示为指定语言格式化的日期,我很惊讶地看到:

babel.dates.format_date(date(2017,1,1), 'MMM Y')
Run Code Online (Sandbox Code Playgroud)

给出预期值,即:

u'Jan 2017'
Run Code Online (Sandbox Code Playgroud)

而:

babel.dates.format_date(date(2017,1,1), 'MMM Y', locale='fr_FR')
Run Code Online (Sandbox Code Playgroud)

给我:

u'janv. 2016'
Run Code Online (Sandbox Code Playgroud)

为什么2016年不是2017年?

小智 7

这是因为Y给你一周的一年.您需要用来yyyy获得您的期望.

请参阅https://github.com/python-babel/babel/issues/138

print format_date(date(2017,1,1), 'MMM yyyy')

print format_date(date(2017,1,1), 'MMM yyyy', locale='fr_FR')

Jan 2017
janv. 2017
Run Code Online (Sandbox Code Playgroud)