2 回答
TA贡献1816条经验 获得超6个赞
请参阅官方 Python 错误跟踪器上的讨论。显然%Z
只支持UTC
,GMT
和本地时区(由 返回time.tzname
)。
这是一个有趣的案例,官方 Python 文档具有误导性(说得好听):
%Z 时区名称(如果对象是幼稚的,则为空字符串)。(空)、UTC、EST、CST
这是错误的。只有当它们是操作系统的本地时区时%Z
才会识别EST
,CST
等。
编辑好吧,文档中页面底部附近有一条注释说
%Z
如果tzname(
) 返回None
,%Z
则替换为空字符串。否则%Z
被返回的值替换,它必须是一个字符串。
不过,还没有想象的那么清楚。
说清楚:
它可以在您的本地计算机上运行,因为它使用 IDT 作为其本地时区,而 AWS 远程计算机则不是这种情况。
TA贡献1853条经验 获得超18个赞
datetime.datetime.strptime("IDT", "%Z")
产生错误
ValueError: time data 'IDT' does not match format '%Z'
因为 %Z 不支持 IDT(以色列夏令时)。
解决方案取决于您接下来要处理的数据。如果您使用pytz并忽略要从中剥离时间的日期字符串的“IDT”部分,那么您可以在记录时区时存储。
dt = datetime.datetime.strptime("Fri, 23 Aug 2019 20:24:46", "%a, %d %b %Y %H:%M:%S")
print(dt)
2019-08-23 20:24:46
然而
import pytz
idt = pytz.timezone('Israel')
dt_idt = dt.astimezone(idt)
print(dt_idt)
2019-08-23 22:24:46+03:00
添加回答
举报