Python: 将日期字符串转换为 UTC
Python: converting date string to UTC
我正在解析一个第 3 方网站 HTML,其日期和时间始终采用英国时间格式,但它们的源代码中没有任何时区信息。使用 datetime.strptime() 将字符串转换为对象非常简单,但是如何添加时区信息?
最终,我需要将这些字符串转换为 UTC 格式的日期时间对象。该代码将始终 运行 在可识别时区的 PC 上,即 datetime.now() 将 return 英国时间。
temp = '07/12/2017 13:30'
dt = datetime.strptime(temp, '%d/%m/%Y %H:%M')
有更好的方法吗?
offset = datetime.now() - datetime.utcnow()
dt -= offset
使用 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'>)
有一些很好的库可以使处理日期变得更加容易。我喜欢 dateparser, parsedatetime, and arrow;
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
我正在解析一个第 3 方网站 HTML,其日期和时间始终采用英国时间格式,但它们的源代码中没有任何时区信息。使用 datetime.strptime() 将字符串转换为对象非常简单,但是如何添加时区信息?
最终,我需要将这些字符串转换为 UTC 格式的日期时间对象。该代码将始终 运行 在可识别时区的 PC 上,即 datetime.now() 将 return 英国时间。
temp = '07/12/2017 13:30'
dt = datetime.strptime(temp, '%d/%m/%Y %H:%M')
有更好的方法吗?
offset = datetime.now() - datetime.utcnow()
dt -= offset
使用 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'>)
有一些很好的库可以使处理日期变得更加容易。我喜欢 dateparser, parsedatetime, and arrow;
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