\CronExpression

CRON expression parser that can determine whether or not a CRON expression is due to run, the next run date and previous run date of a CRON expression.

The determinations made by this class are accurate if checked run once per minute (seconds are dropped from date time comparisons).

Schedule parts must map to: minute [0-59], hour [0-23], day of month, month [1-12|JAN-DEC], day of week [1-7|MON-SUN], and an optional year.

Summary

Methods
Properties
Constants
factory()
__construct()
setExpression()
setPart()
getNextRunDate()
getPreviousRunDate()
getMultipleRunDates()
getExpression()
__toString()
isDue()
No public properties found
MINUTE
HOUR
DAY
MONTH
WEEKDAY
YEAR
getRunDate()
No protected properties found
N/A
No private methods found
$cronParts
$fieldFactory
$order
N/A

Constants

Properties

$cronParts

$cronParts : array

Type

normal — CRON expression parts

$fieldFactory

$fieldFactory : \CronExpression_FieldFactory

Type

normal — CRON field factory

$order

$order : array

Type

normal — Order in which to test of cron parts

Methods

factory()

factory(string  $expression, \CronExpression_FieldFactory  $fieldFactory = null) : \CronExpression

Factory method to create a new CronExpression.

Parameters

string $expression

The CRON expression to create. There are several special predefined values which can be used to substitute the CRON expression:

@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

\CronExpression_FieldFactory $fieldFactory

(optional) Field factory to use

Returns

\CronExpression

__construct()

__construct(string  $expression, \CronExpression_FieldFactory  $fieldFactory) : mixed

Parse a CRON expression

Parameters

string $expression

CRON expression (e.g. '8 ')

\CronExpression_FieldFactory $fieldFactory

Factory to create cron fields

Returns

mixed

setExpression()

setExpression(string  $value) : \CronExpression

Set or change the CRON expression

Parameters

string $value

CRON expression (e.g. 8 )

Throws

\InvalidArgumentException

if not a valid CRON expression

Returns

\CronExpression

setPart()

setPart(int  $position, string  $value) : \CronExpression

Set part of the CRON expression

Parameters

int $position

The position of the CRON expression to set

string $value

The value to set

Throws

\InvalidArgumentException

if the value is not valid for the part

Returns

\CronExpression

getNextRunDate()

getNextRunDate(string|\DateTime  $currentTime = 'now', int  $nth, bool  $allowCurrentDate = false) : \DateTime

Get a next run date relative to the current date or a specific date

Parameters

string|\DateTime $currentTime

(optional) Relative calculation date

int $nth

(optional) Number of matches to skip before returning a matching next run date. 0, the default, will return the current date and time if the next run date falls on the current date and time. Setting this value to 1 will skip the first match and go to the second match. Setting this value to 2 will skip the first 2 matches and so on.

bool $allowCurrentDate

(optional) Set to TRUE to return the current date if it matches the cron expression

Throws

\RuntimeException

on too many iterations

Returns

\DateTime

getPreviousRunDate()

getPreviousRunDate(string|\DateTime  $currentTime = 'now', int  $nth, bool  $allowCurrentDate = false) : \DateTime

Get a previous run date relative to the current date or a specific date

Parameters

string|\DateTime $currentTime

(optional) Relative calculation date

int $nth

(optional) Number of matches to skip before returning

bool $allowCurrentDate

(optional) Set to TRUE to return the current date if it matches the cron expression

Throws

\RuntimeException

on too many iterations

Returns

\DateTime

getMultipleRunDates()

getMultipleRunDates(int  $total, string|\DateTime  $currentTime = 'now', bool  $invert = false, bool  $allowCurrentDate = false) : array

Get multiple run dates starting at the current date or a specific date

Parameters

int $total

Set the total number of dates to calculate

string|\DateTime $currentTime

(optional) Relative calculation date

bool $invert

(optional) Set to TRUE to retrieve previous dates

bool $allowCurrentDate

(optional) Set to TRUE to return the current date if it matches the cron expression

Returns

array —

Returns an array of run dates

getExpression()

getExpression(string  $part = null) : string|null

Get all or part of the CRON expression

Parameters

string $part

(optional) Specify the part to retrieve or NULL to get the full cron schedule string.

Returns

string|null —

Returns the CRON expression, a part of the CRON expression, or NULL if the part was specified but not found

__toString()

__toString() : string

Helper method to output the full expression.

Returns

string —

Full CRON expression

isDue()

isDue(string|\DateTime  $currentTime = 'now') : bool

Determine if the cron is due to run based on the current date or a specific date. This method assumes that the current number of seconds are irrelevant, and should be called once per minute.

Parameters

string|\DateTime $currentTime

(optional) Relative calculation date

Returns

bool —

Returns TRUE if the cron is due to run or FALSE if not

getRunDate()

getRunDate(string|\DateTime  $currentTime = null, int  $nth, bool  $invert = false, bool  $allowCurrentDate = false) : \DateTime

Get the next or previous run date of the expression relative to a date

Parameters

string|\DateTime $currentTime

(optional) Relative calculation date

int $nth

(optional) Number of matches to skip before returning

bool $invert

(optional) Set to TRUE to go backwards in time

bool $allowCurrentDate

(optional) Set to TRUE to return the current date if it matches the cron expression

Throws

\RuntimeException

on too many iterations

Returns

\DateTime