时分秒格式_一日一技:推特时间的格式化方案

3ef9a6a181286a77d8509f8626e94dd4.png

摄影: 产品经理 产品经理煮的热红酒

在使用推特开放API获取推文的时候,会发现推文的发布时间是下面这样的:

{
...
"created_at": "Tue Dec 24 10:51:15 +0000 2019",
...
}

现在我想把它转换为2019-12-24 18:51:15的形式,应该如何操作呢?

可能有同学会按照下面这个逻辑来处理:

  1. 首先,使用空格把这个时间字符串切分开变成['Tue', 'Dec', '24', '10:51:15', '+0000', '2019']
  2. 第0项是星期,不需要,直接丢弃
  3. 第1项是月份,通过一个英文月份简称到月份数字的字典,把Dec映射为12
  4. 第2项是日期,不做修改
  5. 第3项是时分秒,不做修改
  6. 第4项是时区,说明这个时间是采用的0时区,比北京时间晚8小时
  7. 第5项是年份,不做修改
  8. 把修改过的第1项、第2项、第3项、第5项调整顺序,拼接成一个符合要求的时间:2019-12-24 10:51:15。把使用datetime.datetime.strptime转成datetime.datetime对象。
  9. 把这个datetime.datetime对象加上datetime.timedelta(hours=8)
  10. 使用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'

运行效果如下图所示:

b4e744ca5b7cbe6b59c3cdd50c5e6c86.png

b3a356654411c10d543c60fdb9e054ad.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值