Python CI中的datetime.strTime失败
我有以下仅在CI中发生的错误:Python CI中的datetime.strTime失败,python,datetime,python-3.6,Python,Datetime,Python 3.6,我有以下仅在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 = de
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。strtime
?pytz lib可能有问题。比较CI worker和本地的pytz库。您可以找到一个解释,指出EDT是一个不推荐使用的时区。您可以尝试在CI worker上更新pytz库。这是一个带有%Z
指令的程序。当前的文档令人困惑,需要对文档进行修订。挂起的文档更改解释了您遇到的问题:
请注意,strtime
只接受%Z
的某些值:UTC
和GMT
,以及time.tzname
中为您自己定义的内容
地区。对于任何无效字符串,它将返回一个ValueError
。对于
例如,居住在日本的人将拥有UTC
、GMT
和
JST
作为有效值,但可能不是EST
我选择从字符串中去掉%Z值并使用pytz对其进行本地化:
expected_time=timezone('US/Eastern')。本地化(datetime(2019,9,30,17,25),is_dst=True)