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)等。
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
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的时间