Мне производили дату как
>>> import time
>>> print time.strftime("%d %B")
19 July
Есть ли способ отформатировать дату на основе локали, но все еще иметь контроль над тем, что показывают (в некоторых случаях, я не хочу год).
Например, на en_US машине, я хочу, чтобы это произвело:
July 19'th
Методы strftime всегда используют текущую локаль. Например:
from datetime import date
d = date.today()
print d.format("%B %d")
выведет «19 июля» (не «th», извините ...), если ваш языковой стандарт en_US, но «juillet 19», если языковой стандарт использует французский.
Если вы хотите, чтобы порядок различных частей также зависел от локали или других более сложных вещей, я предлагаю вам взглянуть на библиотеку babel , которая использует данные из Common Locale. Data Repository и позволяет вам делать такие вещи, как:
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
вместо long). Это по-прежнему оставляет вам задачу удалить «yyyy» из формата вместе с запятыми и т. Д., Которые могут стоять до или после. Кроме этого, боюсь, вам придется создавать свои собственные шаблоны для каждой локали.