我想从给定的字符串(如 Cron Format)获取运行 cron 的下一个日期带有 seconds
参数(不完全等于 cron 格式)。
我的代码:
$cron_format = explode(" ", "00 00 00 01 * *"); // <second> <minute> <hour> <day> <month> <week_day>
$date_diff = explode(" ", "s i H d m w"); // php Date @link http://php.net/manual/en/function.date.php
$format = [];
foreach( $date_diff as $key=>$value) {
$format[$value] = $cron_format[$key] !== "*" ? date($value, strtotime($cron_format[$key])) : date($value);
}
$spf = sprintf(
"%s-%s-%s %s:%s:%s",
date("Y"), $format["m"], $format["d"], $format["H"], $format["i"], $format["s"]
);
$date = DateTime::createFromFormat("Y-m-d H:i:s", $spf);
// returns 2018-03-01 00:00:00, expected was 2018-04-01 00:00:00
echo $date->format("Y-m-d H:i:s");
它按预期读取 2018-03-01 00:00:00
,但我正在寻找的是获取下一个 Crontab 运行日期的方法 (2018-04-01 00 :00:00)
。
设置添加月份的方法并不能解决问题,因为cron 格式 可以按小时设置,如:
<second> <minute> <hour> <day> <month> <week_day>
00 00 * * * *
最佳答案
无需为此编写更多代码。请使用下面的库来做到这一点
https://github.com/mtdowling/cron-expression
用法:
<?php
// Works with cron expression
$cron = new Cron\CronExpression::factory('15 2,6-12 */15 1 *');
$cron->getNextRunDate();
关于PHP - 获取下一次 crontab 运行的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49493153/