带日期时间段的日期时间算术

Datetime arithmetics with day periods

鉴于 TZ 感知 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

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

图书馆?

解决方案:

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

previous_date = myDatetime - datetime.timedelta(days=1) 
print(previous_date) #2019-10-26 22:00:00+01:00

希望这是您的要求。

我想这就是您要找的。

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

提醒一下,我认为您应该更明确地提出您的问题,因为问题实际上是夏令时(我不知道您所说的偏移量是什么意思,但从您选择的日期开始就明白了)。