python內(nèi)置模塊datetime.timedelta計(jì)算時(shí)間間隔示例代碼

Python的datetime模塊是一個強(qiáng)大的日期和時(shí)間處理庫,它提供了多個類來處理日期和時(shí)間。主要包括幾個功能類datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。
使用datetime模塊
要使用 datetime模塊,直接導(dǎo)入它即可。
import datetime 或者 from datetime import time,datetime,date,timedelta
timedelta類
datetime.timedelta用于表示兩個日期或時(shí)間之間的差異(即時(shí)間間隔)。它通常用于日期的算術(shù)運(yùn)算,比如計(jì)算一個日期加上或減去一定的時(shí)間間隔后的新日期。
timedelta 對象初始化參數(shù)包含天(day)、秒(second)、微秒(microsecond)、毫秒(milliseconds、分鐘(minutes)、小時(shí)(hours)、星期(weeks)時(shí)間單位,但是上述參數(shù)初始化時(shí)星期會轉(zhuǎn)化為天數(shù),分鐘和小時(shí)會轉(zhuǎn)為秒數(shù),毫秒會轉(zhuǎn)為微秒,如下紅框所示:

該類初始化后,可直接調(diào)用如下的屬性函數(shù)獲得對應(yīng)的參數(shù)值

舉例:timedelta類按照如下參數(shù)初始化
timedelta_ins= timedelta(days=10, seconds=30,microseconds=1000,
milliseconds=1,minutes=1, hours=1,weeks=1)
print(timedelta_ins.days)
print(timedelta_ins.seconds)
print(timedelta_ins.microseconds)執(zhí)行結(jié)果:
17
3690
2000
根據(jù)上述紅框中的計(jì)算公式驗(yàn)算如下:
days = 10 + 1*7 = 17
seconds= 30 + 1*60 +1*60 = 3690
microseconds = 1000 + 1*1000 = 2000
1 timedelta配合datetime.date進(jìn)行日期的加減運(yùn)算
在datetime.date(只涉及年,月,日)日期基礎(chǔ)上計(jì)算n天前或者n天后對應(yīng)的日期。
舉例:
- 計(jì)算當(dāng)前日期在1個星期后對應(yīng)的日期
date_ins = date.today() print(date_ins + timedelta(weeks=1)) 結(jié)果:2024-09-21
- 計(jì)算某個日期在50天后對應(yīng)的日期
date_ins = datetime.date(2024,9,1) print(date_ins + datetime.timedelta(days=50)) 結(jié)果:2024-10-21
- 計(jì)算某個日期在50天前對應(yīng)的日期
date_ins = datetime.date(2024,9,1) print(date_ins + datetime.timedelta(days=-50)) 結(jié)果:2024-07-13
- 計(jì)算某個日期在7個星期后對應(yīng)的日期
date_ins = date(2024,9,1) print(date_ins + timedelta(weeks=7)) 結(jié)果:2024-10-20
- 計(jì)算某個日期在435個小時(shí)后對應(yīng)的日期
date_ins = date(2024,9,1) print(date_ins + timedelta(hours=435)) 結(jié)果:2024-09-19
2 timedelta配合datetime.daterime進(jìn)行日期的加減運(yùn)算
在datetime.datetime(涉及年,月,日,小時(shí),分鐘,秒,微秒)時(shí)間基礎(chǔ)上計(jì)算某個時(shí)間后對應(yīng)的時(shí)間。
舉例:
- 計(jì)算當(dāng)前時(shí)間在50天后對應(yīng)的時(shí)間
date_ins = datetime.today() print(date_ins + timedelta(days=50)) 結(jié)果:2024-11-03 10:11:02.663574
- 計(jì)算某個時(shí)間在50天2小時(shí)后對應(yīng)的時(shí)間
from datetime import datetime,timedelta
date_ins = datetime(2024,month=9,day=5,hour=21,minute=34,
second=25,microsecond=10000)
print(date_ins + timedelta(days=50,hours=2))
結(jié)果:2024-10-25 23:34:25
- 計(jì)算某個時(shí)間在50天前對應(yīng)的時(shí)間再加上2小時(shí)20分
from datetime import datetime,timedelta
date_ins = datetime(2024,month=9,day=5,hour=21,minute=34,
second=25,microsecond=10000)
print(date_ins + timedelta(days=-50,hours=2,minutes=20))
結(jié)果:2024-07-17 23:54:25- 計(jì)算某個時(shí)間加上1小時(shí)10秒1萬微秒后對應(yīng)的時(shí)間
from datetime import datetime,timedelta
date_ins = datetime(2024,month=9,day=5,hour=21,minute=34,
second=25,microsecond=10000)
print(date_ins + timedelta(hours=1,seconds=10,microseconds=10000))
結(jié)果:2024-09-05 22:34:35.020000datetime.datetime和 datetime.timedelta配合使用后,有很多種時(shí)間計(jì)算方式,此處不再一一列舉。
3 timedelta類計(jì)算時(shí)間之差
不用配合detetime。datetime和 datetime.date類,timedelta類本身也可以計(jì)算兩個時(shí)間的間隔
舉例:實(shí)例化兩個類對象,timedelta_ins1 時(shí)間大于timedelta_ins2
timedelta_ins1 = timedelta(hours=1,seconds=20,microseconds=10000,weeks=2) timedelta_ins2 = timedelta(days=6,hours=23,seconds=10,microseconds=10000) print(timedelta_ins1 - timedelta_ins2)
結(jié)果:7 days, 2:00:10
4 total_seconds()
該函數(shù)返回timedelta類初始化對象對應(yīng)的秒數(shù)。計(jì)算公式如下:

舉例:
timedelta_ins = timedelta(hours=1,seconds=10,microseconds=10000) print(timedelta_ins.total_seconds())
結(jié)果:3610.01
5 比較時(shí)間大小
正因?yàn)閠imedelta類有__eq__,__lt__等魔法方法,所以具備大小比較的功能。

測試代碼:實(shí)例化兩個類對象,timedelta_ins1 時(shí)間大于timedelta_ins2
timedelta_ins1 = timedelta(hours=1,seconds=10,microseconds=10000,weeks=1) timedelta_ins2 = timedelta(days=6,hours=23,seconds=10,microseconds=10000) print(timedelta_ins1 < timedelta_ins2)
比較結(jié)果:False
總結(jié)
到此這篇關(guān)于python內(nèi)置模塊datetime.timedelta計(jì)算時(shí)間間隔的文章就介紹到這了,更多相關(guān)python datetime.timedelta計(jì)算時(shí)間間隔內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python SELENIUM上傳文件或圖片實(shí)現(xiàn)過程
這篇文章主要介紹了Python SELENIUM上傳文件或圖片實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Python語法學(xué)習(xí)之進(jìn)程的創(chuàng)建與常用方法詳解
本文我們將學(xué)習(xí)一下在?Python?中去創(chuàng)建并使用多進(jìn)程的方法,可以通過創(chuàng)建多個進(jìn)程來幫助我們提高腳本執(zhí)行的效率,感興趣的可以了解一下2022-04-04
python常用運(yùn)維腳本實(shí)例小結(jié)
這篇文章主要介紹了python常用運(yùn)維腳本實(shí)例小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
解決Keras中Embedding層masking與Concatenate層不可調(diào)和的問題
這篇文章主要介紹了解決Keras中Embedding層masking與Concatenate層不可調(diào)和的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python模擬實(shí)現(xiàn)斗地主發(fā)牌
這篇文章主要為大家詳細(xì)介紹了python代碼模擬實(shí)現(xiàn)斗地主發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
django 自定義filter 判斷if var in list的例子
今天小編就為大家分享一篇django 自定義filter 判斷if var in list的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08

