我正在尝试使用strptime来转换,而对于我的生命来说,我无法理解这一点。
'07-17-2019 23:39 PM GMT-4' does not match format '%m-%d-%y %H:%M %p %z'
谢谢你的帮助
发布于 2019-07-18 00:36:51
到目前为止,我发现%y应该是%Y。最好的方法是一次对它进行一点测试。比如从datetime.strptime('07-17-2019', '%m-%d-%Y')开始。格林尼治时间-4也有问题。%z将匹配-0400罚款,%Z将匹配UTC、EST和其他,如果您想要包含夏时制的话,这可能要比偏移量更好,但是看起来这是您在strptime中得到的全部。
dateutil.parser.parse可能为您提供更多的选项和灵活性。
发布于 2019-07-18 02:03:55
我找到了一种方法来做这个,这不是超级灵活,但应该有一点给予。
第一,有几点:
%y应该是%Y,以匹配4位数的年份.GMT-4不是标准的时区名称,因此我们需要手动处理它。#!/usr/bin/env python3
import datetime
s = '07-17-2019 23:39 PM GMT-4'
fmt = '%m-%d-%Y %H:%M' # Excludes AM/PM and timezone on purpose
words = s.split()
# Get just date and time as a string.
s_dt = ' '.join(words[:2])
# Convert date and time to datetime, tz-unaware.
unaware = datetime.datetime.strptime(s_dt, fmt)
# Get GMT offset as int - assumes whole hour.
gmt_offset = int(words[3].replace('GMT', ''))
# Convert GMT offset to timezone.
tz = datetime.timezone(datetime.timedelta(hours=gmt_offset))
# Add timezone to datetime
aware = unaware.replace(tzinfo=tz)
print(aware) # -> 2019-07-17 23:39:00-04:00附注:我用这些做了一些逆向工程。
tz = datetime.timezone(datetime.timedelta(hours=-4))
dt = datetime.datetime(2019, 7, 17, 23, 39, tzinfo=tz)https://stackoverflow.com/questions/57085542
复制相似问题