How to add weekly timedeltas with regards to daylight saving timezones

前端 未结 2 1763
感动是毒
感动是毒 2021-02-14 03:26

I want to add or subtract weeks (or days or month or years) to localized datetime objects. The problem is, that the naive approach will result in 1 hour shifts due to daylight s

2条回答
  •  难免孤独
    2021-02-14 03:46

    timedelta(days=7) means 7 days, as in 7*24 hours - not "solar days". If you add 7 days to a timezone-aware datetime, you'll obtain a datetime that is 7 days later - independently of how that datetime is represented in the timezone.

    It seems what you really want is to apply the delta to the time you specified, ignoring timezone details. Notice the difference:

    In [13]: print my_tz.normalize( my_tz.localize( dt ) + delta )
    2014-04-03 13:00:00+02:00
    
    In [14]: print my_tz.normalize( my_tz.localize( dt + delta ) )
    2014-04-03 12:00:00+02:00
    

    So, if possible, apply the deltas to the datetimes before they are localized.

提交回复
热议问题