Возникает проблема парсинга даты и времени, не понимаю в чем проблема

В чем может быть проблема?

  raise ValueError("time data %r does not match format %r" %
ValueError: time data 'Fri, 06-Nov-2020 21:36:45 GMT' does not match format '%a, %d-%b-%Y %H:%M:%S %Z'

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

Автор решения: gil9red

Думаю, проблема в локали -- она поменялась. Эти %a и %b напрямую от локали зависят (ссылка на похожую проблему).

Как вариант, можно принудительно указывать локаль через locale.setlocale для значений даты и времени через LC_TIME, либо для всего LC_ALL.

Пример:

import datetime as DT
import locale


def check():
    try:
        print(DT.datetime.strptime("Fri, 06-Nov-2020 21:36:45 GMT", "%a, %d-%b-%Y %H:%M:%S %Z"))
    except Exception as e:
        print(f'[-] {e}')


check()
# 2020-11-06 21:36:45

locale.setlocale(locale.LC_TIME, 'ru')
check()
# [-] time data 'Fri, 06-Nov-2020 21:36:45 GMT' does not match format '%a, %d-%b-%Y %H:%M:%S %Z'

locale.setlocale(locale.LC_TIME, 'C')
check()
# 2020-11-06 21:36:45
→ Ссылка