首页 > 解决方案 > 日期时间算术与日期间

问题描述

给定一个 TZ-aware datetime,我想在同一时区中找到前一天同一时间的日期时间(不一定是相同的偏移量)。

我想出了下面的解决方案。

tz = pytz.timezone("Europe/Paris")
myDatetime = tz.localize(datetime.datetime(year=2019, month=10, day=27, hour=22))
print(myDatetime) # 2019-10-27 22:00:00+01:00

# separate into date and time
mydate = myDatetime.date()
time = myDatetime.time()
# find previous day
previous_date = mydate - datetime.timedelta(days=1)
print(previous_date) # 2019-10-26

previous_day = tz.localize(datetime.datetime.combine(date=previous_date, time=time))
print(previous_day) # 2019-10-26 22:00:00+02:00

有没有更简单、更好测试、更标准的方法来做同样的事情?

图书馆?

标签: pythonpython-datetime

解决方案


我想这就是你要找的。

myNewDatetime = tz.localize((myDatetime.replace(tzinfo=None) + datetime.timedelta(days=-1)))

作为提醒,我认为您应该更明确地提出您的问题,因为问题实际上是 DST(我不知道您所说的偏移量是什么意思,但从您选择的日期开始计算)。


推荐阅读