UTC "timezone" causing brain explosions

Ethan Furman ethan at stoneleaf.us
Wed Jan 29 17:21:00 EST 2014


On 01/29/2014 01:52 PM, Skip Montanaro wrote:
> Following up on my earlier note about UTC v. GMT, I am having some
> trouble grokking attempts to convert a datetime into UTC.
>
> Okay, let's see what GMT does for us:
>
>>>> GMT = pytz.timezone("GMT")
>>>> u = GMT.normalize(s)
>>>> u
> datetime.datetime(2014, 1, 29, 21, 39, 35, 263666, tzinfo=<StaticTzInfo 'GMT'>)
>>>> u.hour
> 21
>
> That looks correct, but I don't understand why I don't get hour==21
> out of the UTC.normalize call. It's like it's a no-op.

Having not examined the code, I can't tell you why UTC is different.  I can say that .astimezone seems to work in all cases:

--> GMT
<StaticTzInfo 'GMT'>

--> UTC
<UTC>

--> LOCAL_TZ = pytz.timezone("America/Los_Angeles")

--> now = datetime.datetime.now()

--> s = LOCAL_TZ.localize(now)
--> s
datetime.datetime(2014, 1, 29, 14, 9, 56, 494967, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)

--> s.astimezone(UTC)
datetime.datetime(2014, 1, 29, 22, 9, 56, 494967, tzinfo=<UTC>)

--> s.astimezone(GMT)
datetime.datetime(2014, 1, 29, 22, 9, 56, 494967, tzinfo=<StaticTzInfo 'GMT'>)

--
~Ethan~



More information about the Python-list mailing list