本发明专利技术涉及一种获取定时任务执行时间的方法,其核心为:首先基于Crontab字符串定义定时迭代器中计划调度任务的计划日期时间;然后基于所述定时迭代器实现获取计划调度任务的下次执行日期时间。通过本发明专利技术,只需一个定时迭代器就能够实现每天固定时间执行、每周指定日期执行、每月指定日期执行、每隔多少天/小时/分钟/秒执行、指定区间时间内执行以及上述各种情况的任意组合的复杂的定时计划调度。
【技术实现步骤摘要】
本专利技术涉及通信领域,尤其涉及一种。
技术介绍
随着信息技术的发展,计划调度的需求越来越广泛,如,企业需要计划调度每日的日志或者晚间批处理过程;用户需要根据约定计划调度闹铃时间,等等。因此迫切需要开发能够实现计划调度的应用程序。crontab是Unix系统的一个命令,通过定义简单的字符串,能够完成复杂的计划定义,提供日期排程的功能。在利用crontab命令定义字符串(以下称该字符串为crontab字符串)时,该字符串由空格分隔为5部分f1 f2 f3 f4 f5。其中f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。另外当f1为*时表示每分钟都要执行,f2为*时表示每小时都要执行程序,其余类推。其中,当f1为a-b时表示从第a分钟到第b分钟这段时间内要执行,f2为a-b时表示从第a到第b小时都要执行,其余类推。其中,当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n表示每n小时个时间间隔执行一次,其余类推。其中,当f1为a,b,c,...时表示第a,b,c,...分钟要执行,f2为a,b,c,...时表示第a,b,c...个小时要执行,其余类推。与本专利技术相关的现有技术一的技术方案为在Java定时器框架基础上构造有一个通用的计划调度框架,所述计划调度框架通过定时迭代器提供获取下一次执行时间的接口。所述定时迭代器只能针对某个具体的定义,如每天固定时间执行的定时迭代器、每周指定日期执行的定时迭代器、每月指定日期执行的定时迭代器、每隔多少天/小时/分钟/秒执行的定时迭代器等等,通过这些所述专门的定时迭代器,将一个复杂执行的任务分解为一个个单次执行的定时任务,从而实现任务的计划调度。由现有技术一的技术方案可以看出,其只能通过专门的定时迭代器实现单次的计划调度,如果需要实现各种复杂的定时计划,则必须通过许多不同类型的定时迭代器并加以组合。
技术实现思路
鉴于上述现有技术所存在的问题,本专利技术的目的是提供一种,通过本专利技术,只需一个定时迭代器就能实现每天固定时间执行、每周指定日期执行、每月指定日期执行、每隔多少天/小时/分钟/秒执行、指定区间时间内执行以及上述各种情况的任意组合的复杂的定时计划调度。本专利技术的目的是通过以下技术方案实现的本专利技术提供的一种方法,包括A、基于Crontab字符串定义定时迭代器中计划调度任务的定时日期时间;B、基于所述定时迭代器实现获取计划调度任务的下次执行日期时间。其中,所述步骤A具体包括A1、基于Crontab字符串,在定时迭代器中设置布尔型数组分别表示日期时间;A2、将计划调度任务的日期时间对应的布尔型数组中的值设置为真实值。其中,所述步骤B具体包括B1、根据定义后的定时迭代器计算计划调度的日期时间与基准日期时间间的差值,B2、根据所述差值获取计划调度任务中满足定义的下一次执行日期时间。其中,所述日期时间包括年份、月份、日、周日期、小时和/或分钟。其中,所述步骤B1具体包括B11、计算所述计划调度的日期时间中的月份与基准日期时间中的月份间的差值;B12、判断所述差值是否大于0,如果所述差值大于0,则执行步骤B13;否则,执行步骤B14;B13、调整所述基准日期时间为保持年份不变,将基准日期时间中的月份加上所述差值,将基准日期时间中的日、周日期、小时和分钟设置为1日、1周、0时和0分;然后返回步骤B11;B14、判断所述差值是否小于0,如果所述差值小于0,则调整的基准日期时间为将基准日期时间中的月份加上所述差值,将基准日期时间中的年份加1,将基准日期时间中的日、周日期、小时和分钟设置为1日、1周、0时和0分,然后返回步骤B11;否则,执行步骤B15;B15、根据所述计划调度的日期时间中的日与基准日期时间中的日间的比较结果,获取计划调度任务中满足定义的下一次执行日期时间;或,根据所述计划调度任务的日期时间中的周日期与基准日期时间中的周日期间的比较结果,获取计划调度任务中满足定义的下一次执行日期时间;或,确认获取的基准日期时间为计划调度任务的日期时间。其中,所述步骤B15包括B151、计算所述计划调度的日期时间中的日与基准日期时间中的日间的差值;B152、判断所述差值是否大于0,如果所述差值大于0,则执行步骤B153;否则,执行步骤B154;B153、调整所述基准日期时间为将基准日期时间中的日加上所述差值,保持基准日期时间中的年份和月份不变,将基准日期时间中的的周日期、小时和分钟设置为1周、0时和0分;然后返回步骤B11;B154、判断所述差值是否小于0,如果所述差值小于0,则调整所述基准日期时间为将基准日期时间中的日加上所述差值,并将基准日期时间中的月份加1,且按照日历算法调整基准日期时间中的的月份和年份,以及将基准日期时间中的周日期、小时和分钟设置为1周、0时和0分;然后返回步骤B11;否则,执行步骤B155;B155、根据所述计划调度的日期时间中的周日期与基准日期时间中的周日期间的比较结果,获取计划调度任务中满足定义的下一次执行日期时间;或,根据所述计划调度的日期时间中的小时与基准日期时间中小时间的比较结果,获取计划调度任务中满足定义的下一次执行日期时间;或,确认获取的基准日期时间为计划调度的日期时间。其中,所述步骤B155包括B1551、计算所述计划调度任务的日期时间中的周日期与基准日期时间中的周日期间的差值;B1552、判断所述差值是否大于0,如果所述差值大于0,则执行步骤B1553;否则,执行步骤B1554; B1553、调整所述基准日期时间为将基准日期时间中的周日期加上所述差值,并按照日历算法调整基准日期时间中的年份、月份和日,将基准日期时间中的小时和分钟设置为0时和0分,然后返回步骤B11;B1554、判断所述差值是否小于0,如果所述差值小于0,则调整所述基准日期时间为将基准日期时间中的周日期加上所述差值,并根据日历算法获取加上所述差值后的周日期的下一周,并按照日历算法调整基准日期时间中的年份、月份和日,将所述日期时间中的小时和分钟设置为0时和0分;然后返回步骤B11;否则,执行步骤B1555;B1555、根据所述计划调度的日期时间中的日与基准日期时间中的日间的比较结果,获取计划调度任务中满足定义的下一次执行日期时间;或,确认获取的基准日期时间为计划调度的日期时间。其中,步骤B155或步骤B1555所述根据所述计划调度的日期时间中的日与基准日期时间中的日间的比较结果,获取计划调度任务中满足定义的下一次执行日期时间的过程具体包括C101、计算所述计划调度的日期时间中的小时与基准日期时间中的小时间的差值;C102、判断所述差值是否大于0,如果所述差值大于0,则执行步骤C103;否则,执行步骤C104;C103、调整所述基准日期时间为保持基准日期时间中的年份、月份和日不变,将基准日期时间中的小时加上所述差值,将所述日期时间中的分钟设置为0分,然后返回步骤B11;C104、判断所述差值是否小于0,如果所述差值小于0,则调整所述基准日期时间为将基准日期时间中的小时加上所述差值,并将基准日期时间中的日加1,且根据日历算法调整基准日期时间中的年份、月份和日,将所述基准日期时间中的的分钟设置为0分;然后返回步骤B11;否则本文档来自技高网...
【技术保护点】
一种获取定时任务执行时间的方法,其特征在于,包括: A、基于Crontab字符串定义定时迭代器中计划调度任务的定时日期时间; B、基于所述定时迭代器实现获取计划调度任务的下次执行日期时间。
【技术特征摘要】
【专利技术属性】
技术研发人员:张磊,龚华,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。