Методы STRFTIME всегда используют текущую локаль. Например:
from datetime import date
d = date.today()
print d.format("%B %d")
Выход «19 июля» (без «" й», извините ...), если ваша локаль en_US, но„Juillet 19“, если локаль используется французский язык.
Если вы хотите сделать заказ различных частей, также зависящих от языкового стандарта или других более сложных вещей, я предлагаю вам ознакомиться с библиотекой babel, в которой используются данные из репозитория данных Common Locale и позволяет вам делать такие вещи, как:
from babel.dates import dateformat
format_date(d, format="long", locale="en_US")
, который выведет «19 июля 2010», но «19 Juillet 2010» для французского языка, и т.д ... Обратите внимание, что вы должны явно запросить конкретную локаль, хотя (или, вернее, код языка) Увы, это не позволяет уйти с года. Однако, если вы углубитесь в babel, есть способы получить шаблоны для определенного языка (например, babel.dates.get_date_format("long", locale="en_US").pattern
даст вам «EEEE, MMMM d, yyyy», который вы можете использовать для аргумента format
вместо «long»). Это все еще оставляет вам задачу удалить «yyyy» из формата, вместе с запятой и т. Д., Который может появиться до или после. Кроме этого, я боюсь, вам придется создавать свои собственные шаблоны для каждого региона.
ну, это либо на основе настроек локали, либо нет. – SilentGhost
Итак, что вы говорите, я должен сделать if/else, проверить там, какой язык в настоящий момент установлен, и применить соответствующее форматирование? –
ничего себе. поэтому вы хотите использовать настройки пользователя, но не использовать их? :-) Вы можете прочитать настройки локали, найти год и зап. Эту часть. Я думаю, это будет болезненно. Почему бы просто не использовать файл пользовательских предпочтений, в котором вы храните дату, и дать пользователю возможность узнать, что они хотят? –