我有一个 python 函数可以将给定的日期时间字符串转换为纪元时间。当日期时间字符串具有时区(例如 IST)时,它就可以工作。出于明显的原因,我需要将时区更改为 PST/PDT,但它会抛出
ValueError: time data '01-06-2024 21:30 PDT' does not match format '%d-%m-%Y %H:%M %Z'
#!/usr/bin/python3
def convertTime(dateStr):
from datetime import datetime
import pytz
dateFormat = "%d-%m-%Y %H:%M %Z"
naiveDateTime = datetime.strptime(dateStr, dateFormat)
# tTimezone = pytz.timezone("Asia/Kolkata")
tTimezone = pytz.timezone("America/Los_Angeles")
localizedDateTime = tTimezone.localize(naiveDateTime)
epochTime = int(localizedDateTime.timestamp())
# return epochTime
print(epochTime)
# convertTime("01-06-2024 21:30 IST")
convertTime("01-06-2024 21:30 PDT")
正如我所说,如果我使用
"01-06-2024 21:30 IST"
和 tTimezone = pytz.timezone("Asia/Kolkata")
,它就可以工作。有什么办法可以将 PDT 日期时间转换为纪元吗?
%Z
说明符极其有限。 来自文档:
strptime() 仅接受 %Z 的某些值:
time.tzname 中适合您计算机区域设置的任何值
硬编码值 UTC 和 GMT
因此,居住在日本的人可能将 JST、UTC 和 GMT 作为有效值,但可能不是 EST。对于无效值,它将引发 ValueError。