Converting PDT to UTC using pytz and dateutil

Every time I have to do this it takes me a solid half hour to figure it out, so I'm throwing it up here for future reference. I hate timezone calculations.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

importpytzimportdateutil.parserTZINFOS={'PDT':pytz.timezone('US/Pacific'),# ... add more to handle other timezones# (I wish pytz had a list of common abbreviations)}datestring='11:45:00 Aug 13, 2008 PDT'# Parse the string using dateutildatetime_in_pdt=dateutil.parser.parse(datestring,tzinfos=TZINFOS)# t is now a PDT datetime; convert it to UTCdatetime_in_utc=datetime_in_pdt.astimezone(pytz.utc)# Let's convert it to a naive datetime objectdatetime_naive=datetime_in_utc.replace(tzinfo=None)