时间数据与 ec2 实例中 python 日期时间的格式不匹配

time data does not match format with python datetime in ec2 instance

以下代码适用于我的本地环境 macbook:

 d_time = datetime.strptime(start_time.strip(), "%b %d %Y %I %M %p %Z")

但是当我尝试在一个 ec2 实例上 运行 它 ubuntu 它 returns:

  File "/usr/lib/python3.8/_strptime.py", line 568, in _strptime_datetime
    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
  File "/usr/lib/python3.8/_strptime.py", line 349, in _strptime
    raise ValueError("time data %r does not match format %r" %
ValueError: time data 'Feb 12 2021 02 00 AM PST' does not match format '%b %d %Y %I %M %p %Z'

两个环境都在使用 python 3.8.5

你的问题是 %Z 不会解析像 PST 这样的时区缩写(它只适用于 GMT 和 UTC afaik)。查看 dateutilparser - 在这里,您可以为缩写定义特定的映射。例如:

import dateutil

s = 'Feb 12 2021 02 00 AM PST'

tzmap = {'PST': dateutil.tz.gettz('US/Pacific')}

print(dateutil.parser.parse(s, tzinfos=tzmap))
# 2021-02-12 00:00:00-08:00