Python:将日期字符串转换为UTC

时间:2017-12-07 21:06:17

标签: python datetime tzinfo

我正在解析第三方网站HTML,其日期和时间始终采用英国时间格式,但是他们在源代码中没有任何时区信息。使用datetime.strptime()将字符串转换为对象很容易,但如何添加时区信息?

最终,我需要将这些字符串转换为UTC格式的日期时间对象。代码将始终在可识别时区的PC上运行,即datetime.now()将返回英国时间。

temp = '07/12/2017 13:30'
dt = datetime.strptime(temp, '%d/%m/%Y %H:%M')

有更好的方法吗?

offset = datetime.now() - datetime.utcnow()
dt -= offset

2 个答案:

答案 0 :(得分:1)

使用pytz

import datetime
import pytz

temp = '07/12/2017 13:30'
dt = datetime.strptime(temp, '%d/%m/%Y %H:%M')
timezone = pytz.timezone("Etc/Greenwich")
d_aware = timezone.localize(dt)
d_aware.tzinfo
> <DstTzInfo 'Etc/Greenwich' PST-1 day, 16:00:00 STD>
d_aware
datetime.datetime(2017, 12, 7, 13, 30, tzinfo=<StaticTzInfo 'Etc/Greenwich'>)

答案 1 :(得分:1)

有一些很好的库可以让日期变得更容易。我喜欢dateparserparsedatetimearrow;

import dateparser as dp
dt = dp.parse('07-12-2017 13:30 PST')
print (dt)

dt = dp.parse("Yesterday at 3:00am EST")
print(dt)


2017-07-12 13:30:00-08:00
2017-12-06 17:07:07.557109-05:00