utcoffset v. _utcoffset
Prasad, Ramit
ramit.prasad at jpmorgan.com.dmarc.invalid
Wed Aug 21 16:58:58 EDT 2013
Skip Montanaro wrote:
>
> Consider this little Python script:
>
> import dateutil.parser
> import pytz
>
> x = dateutil.parser.parse("2013-08-16 23:00:00+01:00")
> localtz = pytz.timezone("America/Chicago")
> y = localtz.normalize(x)
>
> When I execute it (Python 2.7.2, dateutil 1.5, pytz 2011h), I get this
> traceback:
>
> Traceback (most recent call last):
> File "/home/skipm/tmp/localtzex.py", line 8, in <module>
> y = localtz.normalize(x)
> File "/opt/TWWfsw/python27p/lib/python2.7/site-packages/pytz/tzinfo.py",
> line 233, in normalize
> offset = dt.tzinfo._utcoffset
> AttributeError: 'tzoffset' object has no attribute '_utcoffset'
>
> Looking at the tzinfo attribute, I see that it has "utcoffset", but
> not "_utcoffset". I realize those are the latest, most up-to-datest
> versions of all three elements. I'm having trouble updating dateutil
> and pytz on my Mac at home (stuck on even older versions). Can
> someone with newer versions of dateutil and pytz see if this problem
> is still present?
>
> Thx,
>
> Skip
> --
Using Python 2.6, dateutil 1.5, pytz 2013b
Snipped from the documentation of pytz via help(localtz.normalize)
'''
Correct the timezone information on the given datetime
If date arithmetic crosses DST boundaries, the tzinfo
is not magically adjusted. This method normalizes the
tzinfo to the correct one.
'''
Going from +1 to +6 will not cross the DST boundary.
The documentation for localtz.normalize (in pytz 2013b) has a sample
of what to do if it does cross DST which seems to boil down to using
datetime.astimezone() and then localtz.normalize() if your date
arithmetic crosses DST.
>>> import dateutil.parser
>>> import pytz
>>> x = dateutil.parser.parse("2013-08-16 23:00:00+01:00")
>>> localtz = pytz.timezone("America/Chicago")
>>> x.astimezone( localtz )
datetime.datetime(2013, 8, 16, 17, 0, tzinfo=<DstTzInfo 'America/Chicago' CDT-1 day, 19:00:00 DST>)
~Ramit
This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.
More information about the Python-list
mailing list