2017-02-05 6 views
1

Я пытаюсь для отображения даты, отформатированный для указанного языка, и я немного удивлен, что:Бабель date_format возвращение 2016 2017 дня

babel.dates.format_date(date(2017,1,1), 'MMM Y') 

дает ожидаемое значение, которое:

u'Jan 2017' 

в то время как:

babel.dates.format_date(date(2017,1,1), 'MMM Y', locale='fr_FR') 

дает мне:

u'janv. 2016' 

Почему это 2016 год не 2017?

+0

Что ваш точный вопрос? –

+0

В чем вопрос? Что касается сокращенных месяцев, то, согласно нам, бедные соты через пруд, 'janv.' является правильным французским сокращенным месяцем формата за январь (https://lts.library.cornell.edu/lts/pp/spp/mosabbr#french). – 2ps

+0

Да, но это должно быть 2017 не 2016 :) – aguyngueran

ответ

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 
+0

также см. Http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table – hop