美文网首页python技巧
python之 datetime模块(时间计算方面比较有优势)

python之 datetime模块(时间计算方面比较有优势)

作者: 陆_志东 | 来源:发表于2018-07-24 00:03 被阅读0次

    datetime模块中包含以下类: 主要看下面关于datetime类的讲解和timedelta的讲解

    date  日期对象,常用的属性有year,month,day
    time  时间对象
    datetime  时间日期对象,常用的属性有hour, minute, second, microsecond  (主要)
    timedelta  时间间隔,即两个时间点之间的长度 (主要)
    

    date对象详解

    date类代码示例:

    a = datetime.date.today()
    >>a
    datetime.date(2018,7,23)
    >>a.year
    2018
    >>a.month
    7
    >>a.day
    23
    

    日期大小比较

    __eq__() 等于
    __gt__() 大于
    __ge__() 大于等于
    __lt__() 小于
    __le__()小于等于
    __ne__() 不等于
    

    代码示例

    a = datetime.date(2018,7,22)
    b = datetime.date(2018,7,23)
    >>a.__eq__(b)
    False
    >>a.__gt__(b)
    False
    >>a.__lt__(b)
    True
    >>a.__ne__(b)
    True
    

    比较两个日期差多少天

    x.__sub__(y)   x-y 
    x.__rsub__(y)   y-x 
    

    代码

    a = datetime.date(2018,7,23)
    b = datetime.date(2018,7,20)
    >>a.__sub__(b).days    # a.__sub__(b)  结果是一个timedelta  类型
    3
    

    timetuple 相当于time.localtime() 一个日期类型的元祖

    >>a = datetime.date.today().timetuple()
    time.struct_time(tm_year=2018, tm_mon=7, tm_mday=23, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=204, tm_isdst=-1)
    >>a.tm_year
    2018
    

    fromtimestamp() 根据给定的时间戳,生成一个date类型的时间,与datetime.datetime.today() 作用相同

    >>a = time.time()
    1532348431.53657
    >>datetime.date.fromtimestamp(a)
    datetime.date(2018, 7, 23)
    

    strftime日期格式化输出

    >>a  = datetime.date.today()
    >>a.strftime("%Y%m%d")
    "20180723"
    

    datetime类详解

    datetime.datetime.now()

    datetime类数据构成
    datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
    microsecond :毫秒
    tzinfo:时区

    返回当前时间日期对象
    >>a= datetime.datetime.now()
    datetime.datetime(2018, 7, 23, 20, 29, 42, 646150)
    

    datetime.datetime.strptime(string,format)

    将string时间,转为format指定的格式

    >>datetime.datetime.strptime('2017-3-22 15:25','%Y-%m-%d %H:%M')
    datetime.datetime(2017, 3, 22, 15, 25)
    

    利用timedelta类型进行时间换算

    from datetime import timedelta
    a = timedelta(days=2,hours=6)
    b = timedelta(hours=4.5)
    c = a+b
    print(c.days)  # 2
    print(c.seconds/3600)  # 10.5
    print(c.total_seconds()/3600)  # 58.5
    

    上面的seconds 是对时间的计算,忽略天数
    total_seconds是连天数月一起计算的差值 58.5的结果由来,天数2天加10.5个小时 = 58.5个小时

    还可以继续看下面的示例

    t1 = datetime.datetime.strptime("2016-08-24 10:30:00", "%Y-%m-%d %H:%M:%S")
    t2 = datetime.datetime.strptime("2016-08-27 12:30:00", "%Y-%m-%d %H:%M:%S")
    
    interval_time = (t2 - t1).seconds  # 输入的结果:7200
    total_interval_time = (t2 - t1).total_seconds() # 输出结果也是: 266400, 3天加2个小时
    

    如果需要特定的日期和时间 可以创建datetime实例并且使用标准的数学运算来操作他们.示例如下:

    from datetime import datetime
    a = datetime(2012,9,23)
    print(a+timedelta(days=10))  # 2012-10-23 00:00:00
    
    b = datetime(2012,12,21) 
    d = b -a
    print(d.days)  # 89
    now = datetime.today()
    print(now)   # 2012-12-21 14:54:43.094063
    print(now +  timedelta(minutes = 10))  # 2012-12-21 15:04:43.094063
    

    datetime 模块是支持处理闰年的,如果是闰年,datetime模块会在2月的时候生成29天

    相关文章

      网友评论

        本文标题:python之 datetime模块(时间计算方面比较有优势)

        本文链接:https://www.haomeiwen.com/subject/dntsmftx.html