摄影:产品经理
产品经理煮的热红酒
在使用推特开放API获取推文的时候,会发现推文的发布时间是下面这样的:
{
...
"created_at": "Tue Dec 24 10:51:15 +0000 2019",
...
}
现在我想把它转换为2019-12-24 18:51:15
的形式,应该如何操作呢?
可能有同学会按照下面这个逻辑来处理:
['Tue', 'Dec', '24', '10:51:15', '+0000', '2019']
Dec
映射为12
2019-12-24 10:51:15
。把使用datetime.datetime.strptime
转成datetime.datetime
对象。datetime.datetime
对象加上datetime.timedelta(hours=8)
strftime
方法再把datetime.datetime
对象转回字符串整个过程看起来非常麻烦。
实际上,我们有更简单的办法来处理。Tue Dec 24 10:51:15 +0000 2019
对应的时间格式为%a %b %d %H:%M:%S %z %Y
;对于一个datetime.datetime
对象,我们可以调用它的astimezone
方法把时区移除,移除以后就会变成当地时间。
完整代码如下:
>>> dt = 'Wed Dec 25 09:09:25 +0000 2019'
>>> dt_obj = datetime.datetime.strptime(dt, '%a %b %d %H:%M:%S %z %Y')
>>> dt_obj.astimezone(tz=None).strftime('%Y-%m-%d %H:%M:%S')
'2019-12-25 17:09:25'
运行效果如下图所示: