python3.3/_strptime.py", line 494, in _strptime_time
tt = _strptime(data_string, format)[0]
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/
python3.3/_strptime.py", line 337, in _strptime
(data_string, format))
ValueError: time data '2012-13-29' does not match format '%Y-%m-%d'
Имена соответствуют вашей локали — набору настроек операционной системы
для интернационализации. Чтобы вывести на экран другие названия месяцев
и дней, измените свою локаль с помощью функции setlocale(): ее первый аргумент
должен быть равен locale.LC_TIME для даты и времени, а второй аргумент — это
строка, содержащая сокращение языка и страны. Пригласим на нашу вечеринку
в честь Дня всех святых наших иностранных друзей. Мы выведем на экран дату
(месяц, число и день недели) на английском, французском, немецком, испанском
и исландском. (А что? Думаете, исландцы не любят вечеринки? У них даже есть
настоящие эльфы.)
>>> import locale
>>> from datetime import date
>>> halloween = date(2014, 10, 31)
>>> for lang_country in ['en_us', 'fr_fr', 'de_de', 'es_es', 'is_is',]:
... locale.setlocale(locale.LC_TIME, lang_country)
... halloween.strftime('%A, %B %d')
...
'en_us'
'Friday, October 31'
'fr_fr'
'Vendredi, octobre 31'
'de_de'
'Freitag, Oktober 31'
'es_es'
'viernes, octubre 31'
'is_is'
'föstudagur, október 31'
>>>
Откуда можно взять эти волшебные значения аргумента lang_country? Это не-
много ненадежно, но вы можете получить их все сразу (всего их несколько сотен):
>>> import locale
>>> names = locale.locale_alias.keys()
300
Глава 10. Системы
Из переменной names получим только те имена локалей, которые будут работать
с методом setlocale(), вроде тех, что мы использовали в предыдущем примере, —
двухсимвольный код языка (http://bit.ly/iso-639-1), в котором после подчеркивания
следует двухсимвольный код страны (http://bit.ly/iso-3166-1):
>>> good_names = [name for name in names if \
len(name) == 5 and name[2] == '_']
Как будут выглядеть первые пять из них?
>>> good_names[:5]
['sr_cs', 'de_at', 'nl_nl', 'es_ni', 'sp_yu']
Если вы хотите получить все локали для Германии, используйте следующий