Не удается подобрать маску для формата строки в дату с русской локалью

Есть строка вида 17 янв 2019 в 23:24:25. Необходимо перевести ее в формат даты, чтобы затем рассчитать разницу между двумя датами. Не удается перевести в дату. Пробовал так:

from datetime import datetime

def diff_days(x, y):
    format = '%d %b %Y в %H:%M:%S'
    d1 = datetime.strptime(x, format)
    d2 = datetime.strptime(y, format)
    return d2 - d1

Получаю ошибку

Exception has occurred: ValueError
time data '17 янв 2019 в 23:24:25' does not match format '%d %b %Y в %H:%M:%S'

Ссылка на datetime


Ответы (2 шт):

Автор решения: Эникейщик

Для "янв" должна быть русская локаль, а у вас скорее всего английская. Потому и не работает. Без костылей не решить.

→ Ссылка
Автор решения: Viewed
import locale
from datetime import datetime

def parse_day(x):
    return datetime.strptime(x, '%d %b %Y в %H:%M:%S')

print(locale.getlocale()) # ('Russian_Russia', '1251')
#parse_day('17 янв 2019 в 23:24:25') # Ошибка

locale.setlocale(locale.LC_ALL, 'ru') # для Windows
# locale.setlocale(locale.LC_ALL, "ru_RU") # для MacOS
print(locale.getlocale()) # ('ru_RU', 'UTF-8')
parse_day('17 янв 2019 в 23:24:25') # Нет ошибки, корректно переводит в дату
→ Ссылка