在我正在创建的应用程序中,用户可以安排重复任务。生成间隔模式的简单值是:
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)]
例如,我有以下格式:10 - 2 - 90 - 90 转换为2015-07-16 2:10
。确定下一个运行时间日期的方法能够向我显示该日期。但是,我正在寻找有效的方法来检查下一个运行时间日期是否已经过去(简单的部分),然后再次生成第一个下一个运行时间日期。在这种情况下,它将是2015-07-17 2:10
.
我发现我们的大脑很容易胜任这项任务,但我不确定应该遵循哪些逻辑步骤来以最有效的方式确定这一点(无需写出所有可能性)。
有什么建议么?
它运行良好。我在用PHP Cron 解析器 http://www.phpclasses.org/package/2568-PHP-Parse-cron-tab-files-to-retrieve-job-schedules.html。它拥有我们需要的一切。
否则,你可以使用克朗表达式 https://github.com/mtdowling/cron-expression更轻松、更高效。一些参考答案已经在这里了 https://stackoverflow.com/questions/3338313/calculating-cron-next-run-time-in-php and here https://stackoverflow.com/questions/321494/calculate-when-a-cron-job-will-be-executed-then-next-time/3453872#3453872在堆栈溢出中。
For 克朗表达式 https://github.com/mtdowling/cron-expression,你可以使用:
$cron = Cron\CronExpression::factory('@daily');
$cron->isDue();
echo $cron->getNextRunDate()->format('Y-m-d H:i:s');//this give next run date.
//echo $cron->getPreviousRunDate()->format('Y-m-d H:i:s');//this give previous run date.
这与你所拥有的和 Cron Expression 所拥有的完全相同,
您需要做的就是使用PHP Cron 表达式 https://github.com/mtdowling/cron-expression。希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)