Я пишу тест для программы, которая будет использоваться в нескольких локалях. При выполнении теста на немецком языке я получил ошибку
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/_strptime.py", line 454, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/local/lib/python2.7/_strptime.py", line 317, in _strptime
(bad_directive, format))
ValueError: 'T' is a bad directive in format '%T'
Углубившись в это, я обнаружил, что при использовании locale.nl_langinfo(locale.T_FMT)
на немецком или испанском (и, возможно, на других языках) получается строка формата '%T'
. Это не распознается в модуле time
.
В документации по locale
на python.org ничего не говорится о возвращении '%T'
. Единственная ссылка на '%T'
, которую я мог найти где-либо, - это ответ на отдельный вопрос StackOverflow . Исходя из этого поста и контекста, я предполагаю, что '%T'
является сокращением для '%H:%M:%S'
.
У меня вопрос, как мне обработать локали, для которых locale
вернет '%T'
для его строки формата, не делая что-то вроде
if fmt_str == '%T':
fmt_str = '%H:%M:%S'
справиться с этими делами?