如何使用 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))
我得到了以 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))