Методы strftime всегда используют текущую локаль. Например:
from datetime import date
d = date.today()
print d.format("%B %d")
выведет «19 июля» (нет «th», извините ...), если ваша локаль en_US, но «juillet 19», если локаль использует французский.
Если вы хотите, чтобы порядок различных частей также зависел от локали или других более сложных вещей, я предлагаю вам взглянуть на библиотеку babel , которая использует данные из общей локали Хранилище данных и позволяет делать такие вещи, как:
from babel.dates import dateformat
format_date(d, format="long", locale="en_US")
, который будет выводить «19 июля 2010 г.», но «19 июля 2010 г.» для французского языка и т. Д. Обратите внимание, что вы должны явно запросить конкретную локаль (или, скорее, код языка)
Увы, это не позволяет уйти из года. Однако, если вы углубитесь в babel, есть способы получить шаблоны для определенной локали (babel.dates.get_date_format("long", locale="en_US").pattern
даст вам, например, "EEEE, MMMM d, yyyy", который вы можете использовать для аргумента format
вместо " долго"). Это все еще оставляет вас с задачей удаления слова «гггг» из формата вместе с запятой и т. Д., Которые могут быть до или после. Кроме этого, боюсь, вам придется создавать свои собственные шаблоны для каждой локали.