Преобразование формата даты работает на Windows, но дает ошибку в Linux - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь отформатировать дату в определенный формат.Код успешно разворачивается в Windows с Python 3.7.однако он не работает в Linux Debian 9.11 - Oython 3.5.Не могу найти решение.Любая помощь очень ценится.

def parse_date(date_string: str, date_format: str) -> str:
    """
    '2019-04-12T00:00:00.000-07:00' --> "%Y-%m-%dT%H:%M:%S.%f%z"
    '2019-04-28T07:25:39.668Z' --> "%Y-%m-%dT%H:%M:%S.%fZ"
    """
    req_date = dt.datetime.strptime(date_string, date_format)
    return req_date.strftime("%Y-%m-%d")

Работает на Windows

parse_date('2019-04-11T00:00:00.000-07:00', "%Y-%m-%dT%H:%M:%S.%f%z")

Не работает в Linux

parse_date('2019-04-11T00:00:00.000-07:00', "%Y-%m-%dT%H:%M:%S.%f%z")

Ошибка значения: данные времени '2019-04-11T00: 00: 00.000-07: 00' не соответствуют формату '% Y-% m-% dT% H:% M:% S.% f% z '

ожидаемое возвращаемое значение: '2019-04-11'

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

В Python 3.5 в смещении UTC не может быть двоеточия.

Смещение UTC в форме + ЧЧММ или -ЧЧММ (пустая строка, если объект наивный).

В Python 3.7, который был изменен для разрешения двоеточия.

0 голосов
/ 29 сентября 2019

В итоге я решил использовать regex для решения проблемы, и она работает.

def parse_date_regex(date_string: str) -> str:
    """
    :return:
    """
    date = re.split('(\d{4}-\d{2}-\d{2})', date_string)
    return [res for res in date if len(res) == 10][0]
...