Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In python how do I convert a datetime in a specific local time (not my local) to UTC

I'm pulling data from a London based service and they are giving me date&time info in London local time.So UTC in winter and BST(UTC+1) in summer.

Internally we use UTC for everything, in Python how do I convert the London stuff to UTC in a way that will account for daylight savings?

I appreciate that some times around the DST rollover are ambiguous, that's acceptable as long as it works the rest of the year.

For completeness, I'm getting the following info from them:

dt="2012-10-12T19:30:00"
lcnid="LDN"
locale="en-gb"
like image 537
Gordon Wrigley Avatar asked Oct 26 '25 07:10

Gordon Wrigley


1 Answers

You need to use a timezone object; these don't come with Python itself as the data changes too often. The pytz library is easily installed though.

Example conversion:

>>> import pytz
>>> import datetime
>>> bst = pytz.timezone('Europe/London')
>>> dt = datetime.datetime.strptime('2012-10-12T19:30:00', '%Y-%m-%dT%H:%M:%S')
>>> dt
datetime.datetime(2012, 10, 12, 19, 30)
>>> bst.localize(dt)
datetime.datetime(2012, 10, 12, 19, 30, tzinfo=<DstTzInfo 'Europe/London' BST+1:00:00 DST>)
>>> bst.localize(dt).astimezone(pytz.utc)
datetime.datetime(2012, 10, 12, 18, 30, tzinfo=<UTC>)
like image 162
Martijn Pieters Avatar answered Oct 28 '25 21:10

Martijn Pieters



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!