cron-expression

CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due

Github星跟踪图

PHP Cron Expression Parser

Latest Stable Version Total Downloads Build Status StyleCI

The PHP cron expression parser can parse a CRON expression, determine if it is
due to run, calculate the next run date of the expression, and calculate the previous
run date of the expression. You can calculate dates far into the future or past by
skipping n number of matching dates.

The parser can handle increments of ranges (e.g. */12, 2-59/3), intervals (e.g. 0-9),
lists (e.g. 1,2,3), W to find the nearest weekday for a given day of the month, L to
find the last day of the month, L to find the last given weekday of a month, and hash
(#) to find the nth weekday of a given month.

More information about this fork can be found in the blog post here. tl;dr - v2.0.0 is a major breaking change, and @dragonmantank can better take care of the project in a separate fork.

Installing

Add the dependency to your project:

composer require dragonmantank/cron-expression

Usage

<?php

require_once '/vendor/autoload.php';

// Works with predefined scheduling definitions
$cron = Cron\CronExpression::factory('@daily');
$cron->isDue();
echo $cron->getNextRunDate()->format('Y-m-d H:i:s');
echo $cron->getPreviousRunDate()->format('Y-m-d H:i:s');

// Works with complex expressions
$cron = Cron\CronExpression::factory('3-59/15 6-12 */15 1 2-5');
echo $cron->getNextRunDate()->format('Y-m-d H:i:s');

// Calculate a run date two iterations into the future
$cron = Cron\CronExpression::factory('@daily');
echo $cron->getNextRunDate(null, 2)->format('Y-m-d H:i:s');

// Calculate a run date relative to a specific time
$cron = Cron\CronExpression::factory('@monthly');
echo $cron->getNextRunDate('2010-01-12 00:00:00')->format('Y-m-d H:i:s');

CRON Expressions

A CRON expression is a string representing the schedule for a particular command to execute. The parts of a CRON schedule are as follows:

*    *    *    *    *
-    -    -    -    -, +----- day of week (0 - 7) (Sunday=0 or 7), +---------- month (1 - 12), +--------------- day of month (1 - 31), +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)

This library also supports a few macros:

  • @yearly, @annually - Run once a year, midnight, Jan. 1 - 0 0 1 1 *
  • @monthly - Run once a month, midnight, first of month - 0 0 1 * *
  • @weekly - Run once a week, midnight on Sun - 0 0 * * 0
  • @daily - Run once a day, midnight - 0 0 * * *
  • @hourly - Run once an hour, first minute - 0 * * * *

Requirements

  • PHP 7.1+
  • PHPUnit is required to run the unit tests
  • Composer is required to run the unit tests

Projects that Use cron-expression

主要指标

概览
名称与所有者dragonmantank/cron-expression
主编程语言PHP
编程语言PHP (语言数: 1)
平台
许可证MIT License
所有者活动
创建于2017-09-16 09:31:41
推送于2025-11-04 03:54:33
最后一次提交2025-11-04 03:54:33
发布数29
最新版本名称v3.6.0 (发布于 )
第一版名称v1.0.0 (发布于 )
用户参与
星数4.7k
关注者数15
派生数123
提交数389
已启用问题?
问题数106
打开的问题数15
拉请求数72
打开的拉请求数10
关闭的拉请求数21
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?