woocommerce/lib/cron-expression
Brent Shepherd 2492f1e0ed Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9
git-subtree-dir: includes/libraries/action-scheduler
git-subtree-split: 5f943d9de5f25f5a107ea21b8d42eff9ed9bf94e
2019-03-28 15:31:13 +10:00
..
CronExpression.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_AbstractField.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_DayOfMonthField.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_DayOfWeekField.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_FieldFactory.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_FieldInterface.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_HoursField.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_MinutesField.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_MonthField.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
CronExpression_YearField.php Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
LICENSE Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00
README.md Squashed 'includes/libraries/action-scheduler/' content from commit 5f943d9 2019-03-28 15:31:13 +10:00

README.md

PHP Cron Expression Parser

Latest Stable Version Total Downloads Build Status

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.

Credits

Created by Micheal Dowling. Ported to PHP 5.2 by Flightless, Inc. Based on version 1.0.3: https://github.com/mtdowling/cron-expression/tree/v1.0.3

Installing

Add the following to your project's composer.json:

{
    "require": {
        "mtdowling/cron-expression": "1.0.*"
    }
}

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 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:

*    *    *    *    *    *
-    -    -    -    -    -
|    |    |    |    |    |
|    |    |    |    |    + year [optional]
|    |    |    |    +----- 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 5.3+
  • PHPUnit is required to run the unit tests
  • Composer is required to run the unit tests

CHANGELOG

1.0.3 (2013-11-23)

  • Only set default timezone if the given $currentTime is not a DateTime instance (#34)
  • Fixes issue #28 where PHP increments of ranges were failing due to PHP casting hyphens to 0
  • Now supports expressions with any number of extra spaces, tabs, or newlines
  • Using static instead of self in CronExpression::factory