python--利用datetime模块计算时间差

利用datetime模块计算两个时间差(天数、小时数、秒、毫秒)

python中通过datetime模块可以很方便的计算两个时间的差,datetime的时间差单位可以是天、小时、秒,甚至是微秒,下面我们就来详细看下datetime的强大功能:


from datetime import datetime 
a=datetime.now() 
b=datetime.now() 
 
>>>a
>>>datetime.datetime(2015, 4, 7, 4, 30, 3, 628556) 
>>>b
>>>datetime.datetime(2015, 4, 7, 4, 34, 41, 907292) 
 
>>>str(a) #字符串的转换,用户储存到文本或者数据库
'2015-04-07 04:30:03.628556' 
>>>datetime.strptime(str(a),"%Y-%m-%d %H:%M:%S.%f")
datetime.datetime(2015, 4, 7, 4, 30, 3, 628556)
 
>>> (b-a)
Out: datetime.timedelta(0, 278, 278736) 
>>>(b-a).seconds #时间差的计算,单位为秒
278

使用datetime模块可以轻松解决相差天数,相差秒数,相差小时数问题:

#计算相差天数
>>> import datetime
>>> d1 = datetime.datetime(2005, 2, 16)
>>> d2 = datetime.datetime(2004, 12, 31)
>>> (d1 - d2).days
47

>>> import datetime
>>> d1 = datetime.date(2005, 2, 16)
>>> d2 = datetime.date(2004, 12, 31)
>>> (d1 - d2).days
47
#计算相差秒数
>>>import datetime
>>>starttime = datetime.datetime.now()
>>>endtime = datetime.datetime.now()
>>>print (endtime - starttime).seconds

#计算当前时间向后10小时的时间。
>>> d1 = datetime.datetime.now()
>>> d3 = d1 + datetime.timedelta(hours=10)
>>> d3.ctime()
datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;
timedelta可以查看:天数(days),秒数(seconds)等。

python自定义函数计算两个日期之间的天数、月数相差

自定义函数1

import datetime
def days(str1,str2):
    date1=datetime.datetime.strptime(str1[0:10],"%Y-%m-%d")
    date2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d")
    num=(date1-date2).days
    return num

def months(str1,str2):
    year1=datetime.datetime.strptime(str1[0:10],"%Y-%m-%d").year
    year2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d").year
    month1=datetime.datetime.strptime(str1[0:10],"%Y-%m-%d").month
    month2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d").month
    num=(year1-year2)*12+(month1-month2)
    return num

输入days(‘2018-04-23 08:18:09’,‘2017-03-21 10:19:33’) ,返回398
输入months(‘2018-01-23 08:18:09’,‘2017-03-21 10:19:33’),返回10

自定义函数2

def monthdelta(d1, d2):
    delta = 0
    while True:
        mdays = monthrange(d1.year, d1.month)[1]
        d1 += timedelta(days=mdays)
        if d1 <= d2:
            delta += 1
        else:
            break
    return delta

传入两个datetime.date的时间

你可能感兴趣的:(Python教程)