如何使用 strptime 提取本地日期?

How to use strptime to extract local dates?

我得到了以 America/Chicago 格式 %m/%d/%Y %I:%M:%S %p 记录的日期时间(即 06/18/2019 09:30:00 PM)。 我怎样才能将它们转换为识别本地 timezone/DST 的 datetime 对象?

我尝试了 datetime.strptime('06/18/2019 09:30:00 PM', '%m/%d/%Y %I:%M:%S %p').astimezone(timezone('America/Chicago')),但得到了意想不到的结果(即 2019-06-18 21:30:00+01:00 而不是 2019-06-18 21:30:00-05:00)。

我正在考虑增加字符串(即通过添加 "EST" 或类似的字符串)。但是,这将由我来确定 DST 当时是否生效。

my_datetime.dst() returns None 如果它不适用或根据文档的 timedelta 对象。您应该能够将其用作布尔值。 https://docs.python.org/3/library/datetime.html

    if my_datetime.dst():
        my_strtime = my_strtime + " CDT" 

您可以使用datetime.replace方法替换tzinfo:

ex = '06/18/2019 09:30:00 PM'


extracted_datetime = datetime.strptime(ex, '%m/%d/%Y %I:%M:%S %p')
my_tz = timezone('America/Chicago')

print(extracted_datetime.replace(tzinfo=my_tz))