在python中如何将特定本地时间(不是我的本地)的日期时间转换为UTC

Gor*_*ley 2 python datetime

我从伦敦的服务中提取数据,他们在伦敦当地时间给我日期和时间信息.冬天的UTC和夏天的BST(UTC + 1).

在内部我们使用UTC作为一切,在Python中我如何将伦敦的东西转换为UTC以一种能够解决夏令时的方式?

我很欣赏DST翻转的某些时候是模棱两可的,只要它在今年剩下的时间里有效,这是可以接受的.

为了完整起见,我从他们那里得到以下信息:

dt="2012-10-12T19:30:00"
lcnid="LDN"
locale="en-gb"
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

您需要使用时区对象; 由于数据经常变化,因此Python本身不具备这些功能.尽管pytz图书馆很容易安装.

转换示例:

>>> 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>)
Run Code Online (Sandbox Code Playgroud)