CI 中的 datetime.strptime 失败

我有以下仅在 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吗?


繁花不似锦
浏览 64回答 2
2回答

牛魔王的故事

这是该指令的一个已知问题。%Z当前文档令人困惑,并且有待修改的文档请求。待处理的文档更改解释了您遇到的问题:请注意,strptime仅接受%Z:UTC 和的某些值,以及为您自己的语言环境GMT定义的值。time.tzname它将ValueError为任何无效字符串返回一个。例如,居住在日本的人将UTC,GMT和 JST作为有效值,但可能不是EST。

四季花海

可能是 pytz lib 的问题。比较 CI 工作者和本地的 pytz 库。在这里,您可以找到指向wikipedia list of timezones的解释,其中指出 EDT 是一个已弃用的时区。您可以尝试在 CI 工作者上更新您的 pytz 库。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python