当时区为 PST 时,Python strptime 不起作用

问题描述 投票:0回答:1

我有一个 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 日期时间转换为纪元吗?

python python-3.x
1个回答
1
投票

%Z
说明符极其有限。 来自文档

strptime() 仅接受 %Z 的某些值:

time.tzname 中适合您计算机区域设置的任何值

硬编码值 UTC 和 GMT

因此,居住在日本的人可能将 JST、UTC 和 GMT 作为有效值,但可能不是 EST。对于无效值,它将引发 ValueError。

© www.soinside.com 2019 - 2024. All rights reserved.