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