Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mtdowling/cron-expression
CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due
https://github.com/mtdowling/cron-expression
Last synced: 2 days ago
JSON representation
CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due
- Host: GitHub
- URL: https://github.com/mtdowling/cron-expression
- Owner: mtdowling
- License: mit
- Created: 2011-04-20T15:48:27.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-04-19T17:16:35.000Z (8 months ago)
- Last Synced: 2024-10-29T19:20:55.735Z (about 1 month ago)
- Language: PHP
- Homepage: http://mtdowling.com/blog/2012/06/03/cron-expressions-in-php/
- Size: 195 KB
- Stars: 4,894
- Watchers: 66
- Forks: 337
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-php - Cron Expression - A library to calculate cron run dates. (Table of Contents / Command Line)
- awesome-php-cn - Cron Expression - 图书馆计算cron运行日期. (目录 / 命令行 Command Line)
- awesome-projects - Cron Expression - A library to calculate cron run dates. (PHP / Command Line)
- awesome-php - Cron Expression - A library to calculate cron run dates. (Table of Contents / Command Line)
README
PHP Cron Expression Parser
==========================[![Latest Stable Version](https://poser.pugx.org/mtdowling/cron-expression/v/stable.png)](https://packagist.org/packages/mtdowling/cron-expression) [![Total Downloads](https://poser.pugx.org/mtdowling/cron-expression/downloads.png)](https://packagist.org/packages/mtdowling/cron-expression) [![Build Status](https://secure.travis-ci.org/mtdowling/cron-expression.png)](http://travis-ci.org/mtdowling/cron-expression)
**NOTE** This fork has been deprecated and development moved to [https://github.com/dragonmantank/cron-expression](https://github.com/dragonmantank/cron-expression). More information can be found in the blog post [here](http://ctankersley.com/2017/10/12/cron-expression-update/). tl;dr - v2.0.0 is a major breaking change, and @dragonmantank can better take care of the project in a separate fork.
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.Installing
==========Add the dependency to your project:
```bash
composer require mtdowling/cron-expression
```Usage
=====
```php
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 2,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)Requirements
============- PHP 7.0+
- PHPUnit is required to run the unit tests
- Composer is required to run the unit tests