Question

Something I'm currently working on requires localised times for users around the world. All datetimes are stored as UTC, so converting them is easy enough and we have a known, safe, point of reference, etc, etc.

However, something about how the offset is expressed is making me scratch my head a moment.

>>> timezone.now()  # get the UTC-stamped server time as an example
datetime.datetime(2013, 5, 21, 16, 37, 54, 62598, tzinfo=<UTC>)

>>> eastern = pytz.timezone('US/Eastern')  # localise this to US/Eastern
>>> utc_dt.astimezone(eastern)
datetime.datetime(2013, 5, 21, 12, 37, 54, 62598,   
    tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>) 

(That's my line break in the datetime output, just to make it easier to spot the bit I'm on about.)

That expression of the offset seems, well, a bit over the top. Rather than simply saying it's an offset of -4h from UTC, it looks like it's saying it's minus one day plus 20:00 hours. Is that right?

Was it helpful?

Solution

You're seeing the repr of the pytz timezone class, which includes implementation details that shouldn't matter when you use it in real life. If you print that same object you'll see something different:

>>> print utc_dt.astimezone(eastern)
2013-05-21 15:00:27.648000-04:00
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top