Datetime timezone trouble (was: Matplotlib X-axis timezone trouble)

Ian Kelly ian.g.kelly at gmail.com
Wed Jul 1 12:55:02 EDT 2015


On Wed, Jul 1, 2015 at 10:36 AM, Peter Pearson
<pkpearson at nowhere.invalid> wrote:
> On Wed, 1 Jul 2015 17:15:38 +1000, Chris Angelico <rosuav at gmail.com> wrote:
>>
>> Interestingly, when I tried this (pytz version 2015.4, Python 2.7.9,
>> Debian Jessie), I saw utcoffset() showing (-1, 58020) for both. That
>> seems... odd. And I can't fault your dates - those definitely ought to
>> be easily inside and easily outside the DST boundaries. When I try
>> those dates in an unrelated time converter, they do show seven- and
>> eight- hour offsets to UTC. Maybe we're both misunderstanding the
>> meaning of utcoffset()?
>
> Here's a very simple demonstration that either something is wrong
> or I don't understand how datetime and tzinfo are supposed to work:
>
> $ python
> Python 2.7.3 (default, Mar 13 2014, 11:03:55)
>>>> from pytz import timezone
>>>> from datetime import datetime
>>>> pacific = timezone("US/Pacific")
>>>> print(datetime(2014, 7, 7, 12, tzinfo=pacific))
> 2014-07-07 12:00:00-08:00
>>>> print(datetime(2014, 1, 7, 12, tzinfo=pacific))
> 2014-01-07 12:00:00-08:00
>>>>
>
> The "-08:00" is appropriate in the second (January) case, but the
> first case is in July, and should have "-07:00".

Use this instead:

>>> print(pacific.localize(datetime(2014, 7, 7, 12)))
2014-07-07 12:00:00-07:00

See http://pytz.sourceforge.net/#localized-times-and-date-arithmetic



More information about the Python-list mailing list