统一转换日期格式dateutil.parser.parse

背景:

我有很多很多的日志数据,每个日志里面都有日期字符串,我需要将其转换为datetime格式。

问题是,这些日志里的字符串格式五花八门,有2017-05-25T05:27:30.313292255Z,有2016-07-01T00:00:00以及其他各种我还没有看到的格式。

开始我写了一长串的if else来判断格式,但是总有我漏掉的。

最后上网一查,发现dateutil.parser.parse。可以不用我们指定格式,直接将字符串转换为datetime格式。

import datetime
import dateutil.parser

def getDateTime(s):
    d = dateutil.parser.parse(s)
    return d

注:我试了下"19/May/2017:04:10:06 +0000" 居然失败了- -!那可能这个函数只认识数字不认得字母吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dateutil.compare()是一个函数,用于比较两个日期时间对象的先后顺序。它接受两个参数,分别是datetime对象或日期时间字符串。 当比较两个日期时间时,返回值可以有三种情况: 1. 若第一个日期时间晚于第二个日期时间,则返回1。 2. 若两个日期时间相同,则返回0。 3. 若第一个日期时间早于第二个日期时间,则返回-1。 这个函数的实现基于以下原则: 1. 首先会检查两个日期时间对象是否为同一类型,如果不是,则会抛出TypeError异常。 2. 如果两个日期时间对象都为datetime对象,则直接比较它们的大小。 3. 如果两个日期时间对象为日期时间字符串,则首先会将它们转换datetime对象,然后再进行比较。 比较的规则如下: 1. 先比较年份,年份相同再比较月份,月份相同再比较日期日期相同再比较小时,依此类推。 2. 如果两个日期时间对象中的任何一个为None,则会引发TypeError异常。 以下是一个示例,演示了dateutil.compare()的用法: ``` from datetime import datetime from dateutil.parser import parse from dateutil import tz date1 = datetime(2022, 5, 20, 8, 30, 0, tzinfo=tz.gettz('Asia/Shanghai')) date2 = parse('2022-05-15 12:00:00', tzinfos=tz.tzlocal) result = dateutil.compare(date1, date2) if result == 1: print("date1晚于date2") elif result == 0: print("date1与date2相同") elif result == -1: print("date1早于date2") ``` 在这个例子中,我们比较了一个具有时区信息的datetime对象(date1)和一个通过解析字符串而生成的datetime对象(date2)。最终结果会根据先后顺序打印出相应的语句。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值