pytz utc conversion pytz utc conversion python python

pytz utc conversion


Your first method seems to be the approved one, and should be DST-aware.

You could shorten it a tiny bit, since pytz.utc = pytz.timezone('UTC'), but you knew that already :)

tz = timezone('US/Pacific')def toUTC(d):    return tz.normalize(tz.localize(d)).astimezone(pytz.utc)print "Test: ", datetime.datetime.utcnow(), " = ", toUTC(datetime.datetime.now())


What is the right way to convert a naive time and a tzinfo into an utc time?

This answer enumerates some issues with converting a local time to UTC:

from datetime import datetimeimport pytz # $ pip install pytzd = datetime(2009, 8, 31, 22, 30, 30)tz = pytz.timezone('US/Pacific')# a) raise exception for non-existent or ambiguous timesaware_d = tz.localize(d, is_dst=None)## b) assume standard time, adjust non-existent times#aware_d = tz.normalize(tz.localize(d, is_dst=False))## c) assume DST is in effect, adjust non-existent times#aware_d = tz.normalize(tz.localize(naive_d, is_dst=True))# convert to UTCutc_d = aware_d.astimezone(pytz.utc)


Use the first method. There's no reason to reinvent the wheel of timezone conversion