我有一个cron"时间定义"
1 * * * * (every hour at xx:01)
2 5 * * * (every day at 05:02)
0 4 3 * * (every third day of the month at 04:00)
* 2 * * 5 (every minute between 02:00 and 02:59 on fridays)
Run Code Online (Sandbox Code Playgroud)
我有一个unix时间戳.
有没有一种明显的方法可以找到(计算)下一次(在给定的时间戳之后)该作业将被执行?
我正在使用PHP,但问题应该与语言无关.
[更新]
" PHP Cron Parser "类(由Ray建议)计算CRON作业应该执行的最后时间,而不是下次.
为了更容易:在我的情况下,cron时间参数只是绝对的,单个数字或"*".没有时间范围,也没有"*/5"间隔.
在我正在创建用户的应用程序中,可以安排重复任务.只需生成间隔模式的值为:
Minute: [0-59, 90 (each minute)]
Hour: [0-23, 90 (each hour)]
Day of month: [1-31, 90 (each day of month), 91 (last day of month)]
Month: [1-12, 90 (each month)]
Run Code Online (Sandbox Code Playgroud)
所以,例如我有这种格式:10 - 2 - 90 - 90转换为2015-07-16 2:10.确定下一个运行时间日期的方法能够向我显示该日期.但是,我正在寻找有效的方法来检查下一个运行时间日期是否已经过去(简单部分),然后再次生成第一个下一个运行时间日期.在这种情况下,它会2015-07-17 2:10.
我发现我们的大脑很容易完成任务,但我不确定要以最有效的方式确定这一步的逻辑步骤(没有写出所有可能性).
有什么建议?