python处理其他时间日期格式为yyyy-MM-dd HH:mm:ss格式

2022-06-18 09:08:43

  这篇只针对目标格式为yyyy-MM-dd HH:mm:ss,有其它需求的就不用看啦~

  今天被提了个要求要统一爬取过来的某日期字段为yyyy-MM-dd HH:mm:ss格式。一看才发现原来存储的日期格式五花八门的,几乎什么样子的都有,所以下面我对不同情况用不同的方法去处理。发现所有数据主要就两大类,做个总结:

一、原数据是其他五花八门的时间格式,如2021,2016-02-24,2016/02/24  2016-02,2018/1等,我们可以直接使用强大的pandas库。

可以用

date = str(pd.to_datetime(date, format='%Y/%m/%d'))

  比如:原date=2021,处理后date=2021-01-01 00:00:00

  可以发现通过pandas的这个方法,会自动用默认值补齐月份和时分秒。给的数据缺少什么,就会补足什么。基本上常见的日期分隔符,pandas都可以识别,所以我非常推荐这个方法

如果数据是“2018615日”这种,自己处理成可以给pandas用的日期分隔符就好啦。比如用
date = date.replace('年', '/').replace('月', '/').replace('日', '')
替换一下,再传给该方法,其他情况就不过多讨论了。

二、原数据是时间戳格式,是正时间戳,593280071424000等。

不管时间戳是几位的,只要是正数,可直接:
date = time.localtime(int(date))
date = time.strftime("%Y-%m-%d %H:%M:%S", date)
就可以得到yyyy-MM-dd HH:mm:ss日期格式。如果时间戳是负数,用这个:
date = str(datetime.datetime(1970, 1, 1) + datetime.timedelta(seconds=int(date)))
   (时间戳是围绕1970年1月1日前后的,不多解释了)  

  做个小结:日期之间的转化方式实在是太多了,可以用time,可以用datetime,还可以用pandas,真的没必要全部总结出来,逮住啥能起作用就用吧!在这方面我觉得就是能用就行~
  • 作者:TranSad
  • 原文链接:https://blog.csdn.net/weixin_44492824/article/details/121938273
    更新时间:2022-06-18 09:08:43