Alexander Belopolsky <alexander.belopol...@gmail.com> writes: > On Wed, Apr 8, 2015 at 3:57 PM, Isaac Schwabacher <ischwabac...@wisc.edu> > wrote: >> >> On 15-04-08, Alexander Belopolsky wrote: >> > With datetime, we also have a problem that POSIX APIs don't have to > deal with: local time >> > arithmetics. What is t + timedelta(1) when t falls on the day before > DST change? How would >> > you set the isdst flag in the result? >> >> It's whatever time comes 60*60*24 seconds after t in the same time zone, > because the timedelta class isn't expressive enough to represent anything > but absolute time differences (nor should it be, IMO). > > This is not what most uses expect. The expect > > datetime(y, m, d, 12, tzinfo=New_York) + timedelta(1) > > to be > > datetime(y, m, d+1, 12, tzinfo=New_York)
It is incorrect. If you want d+1 for +timedelta(1); use a **naive** datetime. Otherwise +timedelta(1) is +24h: tomorrow = tz.localize(aware_dt.replace(tzinfo=None) + timedelta(1), is_dst=None) dt_plus24h = tz.normalize(aware_dt + timedelta(1)) # +24h *tomorrow* and *aware_dt* have the *same* time but it is unknown how many hours have passed if the utc offset has changed in between. *dt_plus24h* may have a different time but there are exactly 24 hours have passed between *dt_plush24* and *aware_dt* http://stackoverflow.com/questions/441147/how-can-i-subtract-a-day-from-a-python-date _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com