Odoo12: strptime не может распознать формат% p (PM / AM)? - PullRequest
0 голосов
/ 21 января 2020

У меня есть этот код внутри функции модели:

data_ordine = order_dict['date'].replace(" UTC","").rstrip()        
_logger.info('Simone --> DATA ORDINE : %s',data_ordine + "|")        
if data_ordine: 
 data_finale = datetime.strptime(data_ordine,"%m/%d/%Y %I:%M%p")

, и когда я пытаюсь выполнить его, я получаю эту ошибку:

File "/usr/lib/python3.5/_strptime.py", line 346, in _strptime    data_string[found.end():])ValueError: unconverted data remains: PM

В журнале я сохранил данные, которые я передаю в функцию strptime, и я вижу, что это:

2020-01-21 11:12:36,221 24082 INFO db_test odoo.addons.tepp_ept.models.sale_order: Simone --> DATA ORDINE : 01/12/2020 10:42PM|

Я пробовал код на Python онлайн-компиляторе и кажется, все в порядке:

from datetime import datetime 
str_date ="01/12/2020 10:42PM" 
date = datetime.strptime(str_date,"%m/%d/%Y %I:%M%p") 
print(date)

Куда я иду не так?

1 Ответ

0 голосов
/ 27 января 2020

Для тех, кто может находиться в той же ситуации, как указано @ Adan-Cortez , это было связано с настройками локали (в частности, настройкой LC_TIME). Я решил это, временно сбросив его, а затем присвоив значение оператора после strptime:

locale.setlocale(locale.LC_TIME, 'en_US.utf8')
if data_ordine:
   data_finale = datetime.strptime(data_ordine,"%m/%d/%Y %I:%M%p")

locale.setlocale(locale.LC_TIME, self.env.context['lang'] + '.utf8')
...