New submission from Gil Shotan:
I encountered a strange bug involving timezone aware datetime objects and
timedelta objects.
The crux of the matter is that daylight savings time is considered a different
timezone, and therefore the timezone of a datetime object is date dependent.
However, adding a timedelta object to a datetime object seems to do the simple
thing which is preserve the timezone object. The bug manifests itself whenever
adding a timedelta object crosses a daylight savings time boundary.
The following code illustrates the problem. Note that the transition between
PDT (Pacific daylight time) and PST (Pacific savings time) occurs on March 9th
(ish)
>>> from datetime import datetime, timedelta
>>> import pytz
>>> tz = pytz.timezone('America/Los_Angeles')
>>> before = tz.localize(datetime(year=2015, month=3, day=8))
>>> before
datetime.datetime(2015, 3, 8, 0, 0, tzinfo=<DstTzInfo 'America/Los_Angeles'
PST-1 day, 16:00:00 STD>)
>>> # notice PST timezone
>>> after_right = tz.localize(datetime(year=2015, month=3, day=10))
>>> after_right
datetime.datetime(2015, 3, 10, 0, 0, tzinfo=<DstTzInfo 'America/Los_Angeles'
PDT-1 day, 17:00:00 DST>)
>>> # notice PDT timezone
>>> after_wrong = before + timedelta(days=2)
>>> after_wrong
datetime.datetime(2015, 3, 10, 0, 0, tzinfo=<DstTzInfo 'America/Los_Angeles'
PST-1 day, 16:00:00 STD>)
>>> # when calculated this way, the timezone remains at PST
----------
components: Distutils
messages: 236326
nosy: dstufft, eric.araujo, gilsho
priority: normal
severity: normal
status: open
title: adding timedelta to datetime object is not timezone aware
type: behavior
versions: Python 2.7
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue23494>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com