Ошибка datetime.strptime в CI - PullRequest
       18

Ошибка datetime.strptime в CI

2 голосов
/ 03 октября 2019

У меня есть следующая ошибка, которая происходит только в CI:

ValueError: time data '09.30.2019 17:50 EDT' does not match format '%m.%d.%Y %H:%M %Z'

Вот мой тест:

def test_extract_time_from_page(pjm_html):
    expected_time = datetime.strptime("09.30.2019 17:50 EDT", "%m.%d.%Y %H:%M %Z")
    res = demand.extract_time_from_page(pjm_html)

    assert res == expected_time

Он проходит локально. Я не уверен, как это может отличаться при работе в среде CI

Редактировать: я могу воспроизвести это, изменив часовой пояс моей машины на что-то отличное от EDT. Разве вы не можете использовать часовой пояс, отличный от вашего текущего часового пояса с datetime.strptime?

Ответы [ 2 ]

2 голосов
/ 03 октября 2019

Это известная проблема с директивой %Z. Текущая документация сбивает с толку, и ожидающий запрос ожидает пересмотра документации. Ожидаемое изменение документации объясняет возникшую проблему:

Обратите внимание, что strptime принимает только определенные значения для %Z: UTC и GMT, и то, что определено в time.tznameдля ваших собственных языков. Он вернет ValueError для любых недопустимых строк. Например, кто-то, живущий в Японии, будет иметь UTC, GMT и JST в качестве допустимых значений, но, вероятно, не EST.

0 голосов
/ 03 октября 2019

Может быть проблема с pytz lib. Сравните pytz libs с вашим рабочим CI и локально. Здесь вы можете найти объяснение, которое указывает на список часовых поясов Википедии , в котором говорится, что EDT является устаревшим часовым поясом. Вы можете попробовать обновить вашу pytz lib на CI worker.

...