專利名稱:獲取定時任務執(zhí)行時間的方法
技術(shù)領域:
本發(fā)明涉及通信領域,尤其涉及一種獲取定時任務執(zhí)行時間的方法。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,計劃調(diào)度的需求越來越廣泛,如,企業(yè)需要計劃調(diào)度每日的日志或者晚間批處理過程;用戶需要根據(jù)約定計劃調(diào)度鬧鈴時間,等等。因此迫切需要開發(fā)能夠?qū)崿F(xiàn)計劃調(diào)度的應用程序。
crontab是Unix系統(tǒng)的一個命令,通過定義簡單的字符串,能夠完成復雜的計劃定義,提供日期排程的功能。
在利用crontab命令定義字符串(以下稱該字符串為crontab字符串)時,該字符串由空格分隔為5部分f1 f2 f3 f4 f5。其中f1是表示分鐘,f2表示小時,f3表示一個月份中的第幾日,f4表示月份,f5表示一個星期中的第幾天。另外當f1為*時表示每分鐘都要執(zhí)行,f2為*時表示每小時都要執(zhí)行程序,其余類推。其中,當f1為a-b時表示從第a分鐘到第b分鐘這段時間內(nèi)要執(zhí)行,f2為a-b時表示從第a到第b小時都要執(zhí)行,其余類推。其中,當f1為*/n時表示每n分鐘個時間間隔執(zhí)行一次,f2為*/n表示每n小時個時間間隔執(zhí)行一次,其余類推。其中,當f1為a,b,c,...時表示第a,b,c,...分鐘要執(zhí)行,f2為a,b,c,...時表示第a,b,c...個小時要執(zhí)行,其余類推。
與本發(fā)明相關(guān)的現(xiàn)有技術(shù)一的技術(shù)方案為在Java定時器框架基礎上構(gòu)造有一個通用的計劃調(diào)度框架,所述計劃調(diào)度框架通過定時迭代器提供獲取下一次執(zhí)行時間的接口。所述定時迭代器只能針對某個具體的定義,如每天固定時間執(zhí)行的定時迭代器、每周指定日期執(zhí)行的定時迭代器、每月指定日期執(zhí)行的定時迭代器、每隔多少天/小時/分鐘/秒執(zhí)行的定時迭代器等等,通過這些所述專門的定時迭代器,將一個復雜執(zhí)行的任務分解為一個個單次執(zhí)行的定時任務,從而實現(xiàn)任務的計劃調(diào)度。
由現(xiàn)有技術(shù)一的技術(shù)方案可以看出,其只能通過專門的定時迭代器實現(xiàn)單次的計劃調(diào)度,如果需要實現(xiàn)各種復雜的定時計劃,則必須通過許多不同類型的定時迭代器并加以組合。
發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明的目的是提供一種獲取定時任務執(zhí)行時間的方法,通過本發(fā)明,只需一個定時迭代器就能實現(xiàn)每天固定時間執(zhí)行、每周指定日期執(zhí)行、每月指定日期執(zhí)行、每隔多少天/小時/分鐘/秒執(zhí)行、指定區(qū)間時間內(nèi)執(zhí)行以及上述各種情況的任意組合的復雜的定時計劃調(diào)度。
本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的本發(fā)明提供的一種獲取定時任務執(zhí)行時間的方法方法,包括A、基于Crontab字符串定義定時迭代器中計劃調(diào)度任務的定時日期時間;B、基于所述定時迭代器實現(xiàn)獲取計劃調(diào)度任務的下次執(zhí)行日期時間。
其中,所述步驟A具體包括A1、基于Crontab字符串,在定時迭代器中設置布爾型數(shù)組分別表示日期時間;A2、將計劃調(diào)度任務的日期時間對應的布爾型數(shù)組中的值設置為真實值。
其中,所述步驟B具體包括B1、根據(jù)定義后的定時迭代器計算計劃調(diào)度的日期時間與基準日期時間間的差值,B2、根據(jù)所述差值獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間。
其中,所述日期時間包括年份、月份、日、周日期、小時和/或分鐘。
其中,所述步驟B1具體包括B11、計算所述計劃調(diào)度的日期時間中的月份與基準日期時間中的月份間的差值;B12、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟B13;否則,執(zhí)行步驟B14;B13、調(diào)整所述基準日期時間為保持年份不變,將基準日期時間中的月份加上所述差值,將基準日期時間中的日、周日期、小時和分鐘設置為1日、1周、0時和0分;然后返回步驟B11;B14、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整的基準日期時間為將基準日期時間中的月份加上所述差值,將基準日期時間中的年份加1,將基準日期時間中的日、周日期、小時和分鐘設置為1日、1周、0時和0分,然后返回步驟B11;否則,執(zhí)行步驟B15;B15、根據(jù)所述計劃調(diào)度的日期時間中的日與基準日期時間中的日間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,根據(jù)所述計劃調(diào)度任務的日期時間中的周日期與基準日期時間中的周日期間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,確認獲取的基準日期時間為計劃調(diào)度任務的日期時間。
其中,所述步驟B15包括B151、計算所述計劃調(diào)度的日期時間中的日與基準日期時間中的日間的差值;B152、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟B153;否則,執(zhí)行步驟B154;B153、調(diào)整所述基準日期時間為將基準日期時間中的日加上所述差值,保持基準日期時間中的年份和月份不變,將基準日期時間中的的周日期、小時和分鐘設置為1周、0時和0分;然后返回步驟B11;B154、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整所述基準日期時間為將基準日期時間中的日加上所述差值,并將基準日期時間中的月份加1,且按照日歷算法調(diào)整基準日期時間中的的月份和年份,以及將基準日期時間中的周日期、小時和分鐘設置為1周、0時和0分;然后返回步驟B11;否則,執(zhí)行步驟B155;B155、根據(jù)所述計劃調(diào)度的日期時間中的周日期與基準日期時間中的周日期間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,根據(jù)所述計劃調(diào)度的日期時間中的小時與基準日期時間中小時間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,確認獲取的基準日期時間為計劃調(diào)度的日期時間。
其中,所述步驟B155包括B1551、計算所述計劃調(diào)度任務的日期時間中的周日期與基準日期時間中的周日期間的差值;B1552、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟B1553;否則,執(zhí)行步驟B1554;
B1553、調(diào)整所述基準日期時間為將基準日期時間中的周日期加上所述差值,并按照日歷算法調(diào)整基準日期時間中的年份、月份和日,將基準日期時間中的小時和分鐘設置為0時和0分,然后返回步驟B11;B1554、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整所述基準日期時間為將基準日期時間中的周日期加上所述差值,并根據(jù)日歷算法獲取加上所述差值后的周日期的下一周,并按照日歷算法調(diào)整基準日期時間中的年份、月份和日,將所述日期時間中的小時和分鐘設置為0時和0分;然后返回步驟B11;否則,執(zhí)行步驟B1555;B1555、根據(jù)所述計劃調(diào)度的日期時間中的日與基準日期時間中的日間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,確認獲取的基準日期時間為計劃調(diào)度的日期時間。
其中,步驟B155或步驟B1555所述根據(jù)所述計劃調(diào)度的日期時間中的日與基準日期時間中的日間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間的過程具體包括C101、計算所述計劃調(diào)度的日期時間中的小時與基準日期時間中的小時間的差值;C102、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟C103;否則,執(zhí)行步驟C104;C103、調(diào)整所述基準日期時間為保持基準日期時間中的年份、月份和日不變,將基準日期時間中的小時加上所述差值,將所述日期時間中的分鐘設置為0分,然后返回步驟B11;C104、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整所述基準日期時間為將基準日期時間中的小時加上所述差值,并將基準日期時間中的日加1,且根據(jù)日歷算法調(diào)整基準日期時間中的年份、月份和日,將所述基準日期時間中的的分鐘設置為0分;然后返回步驟B11;否則,執(zhí)行步驟C105;C105、根據(jù)所述計劃調(diào)度的日期時間中的分鐘與基準日期時間中的的分鐘間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,確認獲取的基準日期時間為計劃調(diào)度的日期時間。
其中,所述步驟C105包括C1051、計算所述計劃調(diào)度的日期時間中的分鐘與基準日期時間中的日期時間中的分鐘間的差值。
C1052、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟C1053;否則,執(zhí)行步驟C1054;C1053、調(diào)整所述基準日期時間為保持基準日期時間中的年份、月份、日和小時不變,將基準日期時間中的分鐘加上所述差值;然后返回步驟B11;C1054、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整所述基準日期時間為將基準日期時間中的小時加1,且根據(jù)日歷算法調(diào)整基準日期時間中的年份、月份和日;然后返回步驟B11;否則,直接執(zhí)行步驟C1055。
C1055、確認獲取的基準日期時間為計劃調(diào)度的日期時間。
其中所述的基準日期時間包括設定的日期時間或當前日期時間。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明所述的方法基于Crontab字符串定義定時迭代器中計劃調(diào)度任務的計劃日期時間;然后基于所述定時迭代器實現(xiàn)獲取計劃調(diào)度任務的下次執(zhí)行日期時間。通過本發(fā)明,只需一個定時迭代器就能夠?qū)崿F(xiàn)每天固定時間執(zhí)行、每周指定日期執(zhí)行、每月指定日期執(zhí)行、每隔多少天/小時/分鐘/秒執(zhí)行、指定區(qū)間時間內(nèi)執(zhí)行以及上述各種情況的任意組合的復雜的定時計劃調(diào)度。
圖1為本發(fā)明的流程圖。
具體實施例方式
本發(fā)明提供了一種獲取定時任務執(zhí)行時間的方法,其核心是基于Crontab字符串定義定時迭代器中計劃調(diào)度任務的定時日期時間;然后基于所述定時迭代器實現(xiàn)獲取計劃調(diào)度任務的下次執(zhí)行日期時間。
本發(fā)明提供的第一實施例,包括兩部分步驟一,基于Crontab字符串定義定時迭代器中計劃調(diào)度任務的定時日期時間。
在這一步驟中,首先基于Crontab字符串,在定時迭代器中設置布爾型數(shù)組分別表示日期時間,然后,將計劃調(diào)度任務的日期時間對應的布爾型數(shù)組中的值設置為真實值。
下面舉例詳細說明這一步驟的具體實現(xiàn)過程如,用5個布爾型數(shù)組來分別表示分鐘、小時、日、月、星期,數(shù)組長度分別為60、24、31、12和7,值為true表示數(shù)組對應的時刻滿足定義。
假設要實現(xiàn)每月1日至15日每隔兩天的上午5點執(zhí)行某項定時任務,則crontab字符串為0 5 1-15/2**對應的數(shù)組分別為分鐘數(shù)組第0個值為true,其他為false;小時數(shù)組第5個值為true,其他為false;日數(shù)組第0、2、4、6、8、10、12、14個值為true,其他為false;
月數(shù)組所有的值均為true;星期數(shù)組所有的值均為true。
步驟二,根據(jù)定義后的定時迭代器實現(xiàn)獲取計劃調(diào)度任務的下次執(zhí)行日期時間。
在這一步驟中,首先需要計算計劃調(diào)度任務的日期時間與基準日期時間間的差值,計算前需要一個基準日期時間的初始值,這個值可以自己定義,也可以默認從當前日期時間開始。然后,本發(fā)明根據(jù)所述計算差值,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間,并根據(jù)所獲取的下一次執(zhí)行的日期時間調(diào)度計劃執(zhí)行的任務。具體實現(xiàn)過程,以默認從當前日期時間開始,如圖1所示,包括步驟S101,計算所述計劃調(diào)度任務的定時月份與當前月份間的差值。
步驟S102,判斷所述差值是否大于0。
如果所述差值大于0,則表示當前月份后的某月滿足定義,于是執(zhí)行步驟S103,即調(diào)整當前日期時間為保持年份不變,將當前月份加上所述差值,將所述日期時間中的日、周日期、小時和分鐘設置為1日、1周、0時和0分,然后執(zhí)行步驟S101。
如果所述差值不大于0,則執(zhí)行步驟S104,即判斷所述差值是否小于0,如果所述差值小于0,則表示次年的某月滿足定義,于是執(zhí)行步驟S105,即調(diào)整當前日期時間為將當前月份加上所述差值,將當前日期時間中的年份加1,將所述日期時間中的日、周日期、小時和分鐘設置為1日、1周、0時和0分,然后執(zhí)行步驟S101;否則,表示當前月份滿足定義,則直接執(zhí)行步驟S111。
步驟S111,計算所述計劃調(diào)度任務的定時日與當前日間的差值。
步驟S112,判斷所述差值是否大于0。
如果所述差值大于0,則表示當前日后的某日滿足定義,于是執(zhí)行步驟S113,即調(diào)整當前日期時間為將當前日加上所述差值,保持年份和月份不變,將所述日期時間中的周日期、小時和分鐘設置為1周、0時和0分;然后執(zhí)行步驟S101。
如果所述差值不大于0,則執(zhí)行步驟S114,即判斷所述差值是否小于0,如果所述差值小于0,則表示當前日前的某日滿足定義,也就是說,下一個月的某日滿足定義,于是執(zhí)行步驟S115,即調(diào)整當前日期為將當前日加上所述差值,并將當前日期中的月份加1,且按照日歷算法調(diào)整所述日期時間中的月份和年份,以及將所述日期時間中的周日期、小時和分鐘設置為1周、0時和0分;然后執(zhí)行步驟S101;否則表示當前日滿足定義,則直接執(zhí)行步驟S121。
步驟S121,計算所述計劃調(diào)度任務的日期時間中的周日期與當前周日期間的差值。
步驟S122,判斷所述差值是否大于0。
如果所述差值大于0,則表示當前周日期后的某周日期滿足定義,于是執(zhí)行步驟S123,即調(diào)整當前日期時間為將當前周日期加上所述差值,并按照日歷算法調(diào)整年份、月份和日,將所述日期時間中的小時和分鐘設置為0時和0分;然后執(zhí)行步驟S101。
如果所述差值不大于0,則執(zhí)行步驟S124,即判斷所述差值是否小于0,如果所述差值小于0,則表示當前周日期的下一周滿足定義,于是執(zhí)行步驟S125,即調(diào)整當前日期時間為將當前周日期加上所述差值,并根據(jù)日歷算法獲取加上所述差值后的周日期的下一周,并按照日歷算法調(diào)整年份、月份和日,將所述日期時間中的小時和分鐘設置為0時和0分,然后執(zhí)行步驟S101;否則表示當前周日期滿足定義,則直接執(zhí)行步驟S131。
步驟S131,計算所述計劃調(diào)度任務的日期時間中的定時小時與當前小時間的差值。
步驟S132,判斷所述差值是否大于0。
如果所述差值大于0,則表示當前小時后的某小時滿足定義,于是執(zhí)行步驟S133,即調(diào)整當前日期時間為保持年份、月份和日不變,將當前小時加上所述差值,并保持年份、月份和日不變,將所述日期時間中的分鐘設置為0分;然后執(zhí)行步驟S101。
如果所述差值不大于0,則執(zhí)行步驟S134,即判斷所述差值是否小于0,如果所述差值小于0,則表示當前日后的某小時滿足定義,于是執(zhí)行步驟S135,即調(diào)整當前日期時間為將當前小時加上所述差值,并將當前日加1,且根據(jù)日歷算法調(diào)整年份、月份和日,將所述日期時間中的分鐘設置為0分;然后執(zhí)行步驟S101;否則表示當前小時滿足定義,則直接執(zhí)行步驟S141。
步驟S141,計算所述計劃調(diào)度任務的日期時間中的分鐘與當前日期時間中的分鐘間的差值。
步驟S142,判斷所述差值是否大于0。
如果所述差值大于0,則表示當前分鐘后的某分鐘滿足定義,于是執(zhí)行步驟S143,即調(diào)整當前日期時間為保持年份、月份、日和小時不變,將當前日期時間中的分鐘加上所述差值;然后執(zhí)行步驟S141。
如果所述差值不大于0,則執(zhí)行步驟S144,即判斷所述差值是否小于0,如果所述差值小于0,則表示當前小時后的某分鐘滿足定義,于是執(zhí)行步驟S135,即調(diào)整當前日期時間為將當前日期時間中的分鐘加上所述差值,并將當前日期時間中的小時加1,且根據(jù)日歷算法調(diào)整年份、月份和日;然后執(zhí)行步驟S141;否則表示當前分鐘滿足定義,則直接執(zhí)行步驟S141。
步驟S141,確認獲取的當前日期時間為計劃調(diào)度的日期時間。
本發(fā)明的第二實施例,與第一實施例不同的地方在于,不包括步驟121至步驟125間的過程,當判斷當前日滿足定義后,直接轉(zhuǎn)向步驟S131。
下面舉例詳細說明第二實施例的實施過程假設計劃時間為每月5日1點10分,當前時間為2005年5月6日13點。那么獲取下一次執(zhí)行的具體時間的過程為步驟一,比較月份,因為計劃時間為每月,所以肯定滿足要求,執(zhí)行步驟二。
步驟二,比較日期計劃日為5日,當前日為6日,二者的差值為-1,所以將當前月份加1,當前日期變?yōu)?+(-1)=5,小時調(diào)整為0,分鐘調(diào)整為0,這時當前時間變?yōu)?005年6月5日0點0分,然后執(zhí)行步驟一,比較月份,此時計劃時間的月份為每月,所以滿足定義,其與當前月份的差值為0,所以轉(zhuǎn)向步驟二,繼續(xù)比較日期,此時計劃日為5日,當前日也為5日,二者間的差值都為0,然后執(zhí)行步驟三;步驟三,比較小時計劃小時為1點,當前小時為0點,二者的差值為1,則調(diào)整當前日期將當前小時數(shù)直接加1,然后執(zhí)行步驟一,此時月、日、小時的差值均為0,轉(zhuǎn)向步驟四;步驟四,比較分鐘,差值為10,分鐘加10,此時的時間為2005年6月5日1點10分。即確認獲取的當前日期時間為計劃調(diào)度的日期時間。執(zhí)行時間。
上述實施例中,如果計劃調(diào)度任務的計劃日期時間僅僅為某月或每月定時發(fā)生時,則步驟S111為,確認獲取的當前日期時間為計劃調(diào)度的日期時間,后續(xù)過程不再進行。
如果計劃調(diào)度任務的計劃日期時間為某月某日或每月某日定時發(fā)生時,則不再進行步驟121至步驟145間的處理過程,當判斷當前日滿足定義后,直接轉(zhuǎn)向步驟S146。
如果計劃調(diào)度任務的計劃日期時間為某月某日某時或每月某日某時定時發(fā)生時,則不再進行步驟141至步驟145間的處理過程,當判斷當前小時滿足定義后,直接轉(zhuǎn)向步驟S146。
如果計劃調(diào)度任務的計劃日期時間為某月某周或每月某周定時發(fā)生時,則不再進行步驟111至步驟105間,以及步驟131至步驟145間的處理過程,當判斷當前周滿足定義后,直接轉(zhuǎn)向步驟S146。
在上述獲取下一次執(zhí)行日期時間的過程中,首先從當前日期時間開始,向后搜索滿足定義(即值為true)的日期時間,如果存在滿足定義的日期時間,則根據(jù)上述步驟獲取下一次執(zhí)行日期時間;如果搜索失敗,則從當年的第一月開始往后搜索滿足定義的日期時間。
以月份為例說明本發(fā)明獲取的下一次執(zhí)行日期時間的遍歷過程首先從當前月份開始,往后搜索滿足定義(即值為true)的月份,若存在這樣的月份,則根據(jù)上述步驟獲取下一次執(zhí)行日期時間;如果搜索失敗,則從當年的第一月開始往后搜索滿足定義的日期時間。
當本發(fā)明通過上述步驟獲取到下一次執(zhí)行的日期時間后,則根據(jù)獲取到的所述下一次執(zhí)行日期時間進行計劃調(diào)度任務的調(diào)度。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明所述的方法基于Crontab字符串定義定時迭代器中計劃調(diào)度任務的計劃日期時間;然后根據(jù)定義后的定時迭代器實現(xiàn)獲取計劃調(diào)度任務的下次執(zhí)行日期時間。通過本發(fā)明,只需一個定時迭代器就能夠?qū)崿F(xiàn)每天固定時間執(zhí)行、每周指定日期執(zhí)行、每月指定日期執(zhí)行、每隔多少天/小時/分鐘/秒執(zhí)行、指定區(qū)間時間內(nèi)執(zhí)行以及上述各種情況的任意組合的復雜的定時計劃調(diào)度。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應該以權(quán)利要求的保護范圍為準。
權(quán)利要求
1.一種獲取定時任務執(zhí)行時間的方法,其特征在于,包括A、基于Crontab字符串定義定時迭代器中計劃調(diào)度任務的定時日期時間;B、基于所述定時迭代器實現(xiàn)獲取計劃調(diào)度任務的下次執(zhí)行日期時間。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A具體包括A1、基于Crontab字符串,在定時迭代器中設置布爾型數(shù)組分別表示日期時間;A2、將計劃調(diào)度任務的日期時間對應的布爾型數(shù)組中的值設置為真實值。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述步驟B具體包括B1、根據(jù)定義后的定時迭代器計算計劃調(diào)度的日期時間與基準日期時間間的差值;B2、根據(jù)所述差值獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述日期時間包括年份、月份、日、周日期、小時和/或分鐘。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟B1具體包括B11、計算所述計劃調(diào)度的日期時間中的月份與基準日期時間中的月份間的差值;B12、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟B13;否則,執(zhí)行步驟B14;B13、調(diào)整所述基準日期時間為保持年份不變,將基準日期時間中的月份加上所述差值,將基準日期時間中的日、周日期、小時和分鐘設置為1日、1周、0時和0分,然后返回步驟B11;B14、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整的基準日期時間為將基準日期時間中的月份加上所述差值,將基準日期時間中的年份加1,將基準日期時間中的日、周日期、小時和分鐘設置為1日、1周、0時和0分,然后返回步驟B11;否則,執(zhí)行步驟B15;B15、根據(jù)所述計劃調(diào)度的日期時間中的日與基準日期時間中的日間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,根據(jù)所述計劃調(diào)度任務的日期時間中的周日期與基準日期時間中的周日期間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,確認獲取的基準日期時間為計劃調(diào)度任務的日期時間。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟B15包括B151、計算所述計劃調(diào)度的日期時間中的日與基準日期時間中的日間的差值;B152、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟B153;否則,執(zhí)行步驟B154;B153、調(diào)整所述基準日期時間為將基準日期時間中的日加上所述差值,保持基準日期時間中的年份和月份不變,將基準日期時間中的的周日期、小時和分鐘設置為1周、0時和0分,然后返回步驟B11;B154、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整所述基準日期時間為將基準日期時間中的日加上所述差值,并將基準日期時間中的月份加1,且按照日歷算法調(diào)整基準日期時間中的的月份和年份,以及將基準日期時間中的周日期、小時和分鐘設置為1周、0時和0分,然后返回步驟B11;否則,執(zhí)行步驟B155;B155、根據(jù)所述計劃調(diào)度的日期時間中的周日期與基準日期時間中的周日期間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,根據(jù)所述計劃調(diào)度的日期時間中的小時與基準日期時間中小時間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,確認獲取的基準日期時間為計劃調(diào)度的日期時間。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟B155包括B1551、計算所述計劃調(diào)度任務的日期時間中的周日期與基準日期時間中的周日期間的差值;B1552、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟B1553;否則,執(zhí)行步驟B1554;B1553、調(diào)整所述基準日期時間為將基準日期時間中的周日期加上所述差值,并按照日歷算法調(diào)整基準日期時間中的年份、月份和日,將基準日期時間中的小時和分鐘設置為0時和0分,然后返回步驟B11;B1554、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整所述基準日期時間為將基準日期時間中的周日期加上所述差值,并根據(jù)日歷算法獲取加上所述差值后的周日期的下一周,并按照日歷算法調(diào)整基準日期時間中的年份、月份和日,將所述日期時間中的小時和分鐘設置為0時和0分,然后返回步驟B11;否則,執(zhí)行步驟B1555;B1555、根據(jù)所述計劃調(diào)度的日期時間中的日與基準日期時間中的日間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,確認獲取的基準日期時間為計劃調(diào)度的日期時間。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟B155或步驟B1555所述根據(jù)所述計劃調(diào)度的日期時間中的日與基準日期時間中的日間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間的過程具體包括C101、計算所述計劃調(diào)度的日期時間中的小時與基準日期時間中的小時間的差值;C102、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟C103;否則,執(zhí)行步驟C104;C103、調(diào)整所述基準日期時間為保持基準日期時間中的年份、月份和日不變,將基準日期時間中的小時加上所述差值,將所述日期時間中的分鐘設置為0分,然后返回步驟B11;C104、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整所述基準日期時間為將基準日期時間中的小時加上所述差值,并將基準日期時間中的日加1,且根據(jù)日歷算法調(diào)整基準日期時間中的年份、月份和日,將所述基準日期時間中的的分鐘設置為0分,然后返回步驟B11;否則,執(zhí)行步驟C105;C105、根據(jù)所述計劃調(diào)度的日期時間中的分鐘與基準日期時間中的的分鐘間的比較結(jié)果,獲取計劃調(diào)度任務中滿足定義的下一次執(zhí)行日期時間;或,確認獲取的基準日期時間為計劃調(diào)度的日期時間。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述步驟C105包括C1051、計算所述計劃調(diào)度的日期時間中的分鐘與基準日期時間中的日期時間中的分鐘間的差值。C1052、判斷所述差值是否大于0,如果所述差值大于0,則執(zhí)行步驟C1053;否則,執(zhí)行步驟C1054;C1053、調(diào)整所述基準日期時間為保持基準日期時間中的年份、月份、日和小時不變,將基準日期時間中的分鐘加上所述差值,然后返回步驟B11;C1054、判斷所述差值是否小于0,如果所述差值小于0,則調(diào)整所述基準日期時間為將基準日期時間中的小時加1,且根據(jù)日歷算法調(diào)整基準日期時間中的年份、月份和日,然后返回步驟B11;否則,直接執(zhí)行步驟C1055。C1055、確認獲取的基準日期時間為計劃調(diào)度的日期時間。
10.根據(jù)權(quán)利要求3所述的基準日期時間包括設定的日期時間或當前日期時間。
全文摘要
本發(fā)明涉及一種獲取定時任務執(zhí)行時間的方法,其核心為首先基于Crontab字符串定義定時迭代器中計劃調(diào)度任務的計劃日期時間;然后基于所述定時迭代器實現(xiàn)獲取計劃調(diào)度任務的下次執(zhí)行日期時間。通過本發(fā)明,只需一個定時迭代器就能夠?qū)崿F(xiàn)每天固定時間執(zhí)行、每周指定日期執(zhí)行、每月指定日期執(zhí)行、每隔多少天/小時/分鐘/秒執(zhí)行、指定區(qū)間時間內(nèi)執(zhí)行以及上述各種情況的任意組合的復雜的定時計劃調(diào)度。
文檔編號G06Q10/00GK1862576SQ20051009090
公開日2006年11月15日 申請日期2005年8月19日 優(yōu)先權(quán)日2005年8月19日
發(fā)明者張磊, 龔華 申請人:華為技術(shù)有限公司