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
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.