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的時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章