Каковы пределы% z в Python datetime? - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь разобрать список рассылки Apache Pig . При анализе дат я использую следующую функцию.

from datetime import datetime

def str_to_date(date_str):
    # First, remove the (UTC) type of parts at the end
    try:
        date_str = date_str[: date_str.index("(") - 1]
    except ValueError:
        pass

    # Then, try different date formats
    for date_format in [
        "%a, %d %b %Y %H:%M:%S %z",
        "%a %b %d %Y %H:%M:%S %z",
        "%a %b %d %H:%M:%S %Y %z",
        "%d %b %Y %H:%M:%S %z",
    ]:
        try:
            return datetime.strptime(date_str, date_format)
        except ValueError:
            pass

    raise ValueError("No valid date format found for {}".format(date_str))

В 201201.mbox возникает следующая ошибка:

ValueError: No valid date format found for Fri, 20 Jan 2012 16:31:14 +0580

Когда я проверяю mbox , Понял, что это включает строку Date: Fri, 20 Jan 2012 16:31:14 +0580. Таким образом, он не соответствует ни одному из форматов даты в функции, но проблема в том, что +0580 должно быть «5-символьной строкой в ​​форме + ЧЧММ или -ЧЧММ, где ЧЧ - это строка 2-di git, дающая количество часов смещения UT C, а MM - это строка 2-di git, дающая количество минут UT C смещения " (docs)

Согласно mbox, смещение даты отправки составляет +0580, что означает плюс 5 часов 80 минут. Это не так? Или я что-то упустил?

1 Ответ

1 голос
/ 14 июля 2020

В часе всего 60 минут, поэтому MM не может быть больше 59. +0580 должно быть +0620.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...