2010-07-19 4 views
1

У меня есть выход даты, какдата Формат основан на локали в питона

>>> import time 
>>> print time.strftime("%d %B") 
19 July 

Есть ли способ форматирования даты, основанный на местности, но до сих пор контроль того, что показано (в некоторых случаях я дон Не хочу года).

Например, на машине en_US, я хочу его к выходу:

July 19'th 
+0

ну, это либо на основе настроек локали, либо нет. – SilentGhost

+0

Итак, что вы говорите, я должен сделать if/else, проверить там, какой язык в настоящий момент установлен, и применить соответствующее форматирование? –

+0

ничего себе. поэтому вы хотите использовать настройки пользователя, но не использовать их? :-) Вы можете прочитать настройки локали, найти год и зап. Эту часть. Я думаю, это будет болезненно. Почему бы просто не использовать файл пользовательских предпочтений, в котором вы храните дату, и дать пользователю возможность узнать, что они хотят? –

ответ

2

Методы 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» из формата, вместе с запятой и т. Д., Который может появиться до или после. Кроме этого, я боюсь, вам придется создавать свои собственные шаблоны для каждого региона.

+0

+1 для ссылки на babel –