Documentation

CronExpression
in package

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.

Tags
link
http://en.wikipedia.org/wiki/Cron

Table of Contents

DAY  = 2
HOUR  = 1
MINUTE  = 0
MONTH  = 3
WEEKDAY  = 4
YEAR  = 5
$cronParts  : array<string|int, mixed>
$fieldFactory  : FieldFactory
$maxIterationCount  : int
$order  : array<string|int, mixed>
__construct()  : mixed
Parse a CRON expression
__toString()  : string
Helper method to output the full expression.
factory()  : CronExpression
Factory method to create a new CronExpression.
getExpression()  : string|null
Get all or part of the CRON expression
getMultipleRunDates()  : array<string|int, mixed>
Get multiple run dates starting at the current date or a specific date
getNextRunDate()  : DateTime
Get a next run date relative to the current date or a specific date
getPreviousRunDate()  : DateTime
Get a previous run date relative to the current date or a specific date
isDue()  : 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.
isValidExpression()  : bool
Validate a CronExpression.
setExpression()  : CronExpression
Set or change the CRON expression
setMaxIterationCount()  : CronExpression
Set max iteration count for searching next run dates
setPart()  : CronExpression
Set part of the CRON expression
getRunDate()  : DateTime
Get the next or previous run date of the expression relative to a date

Constants

Properties

$cronParts

private array<string|int, mixed> $cronParts

CRON expression parts

$maxIterationCount

private int $maxIterationCount = 1000

Max iteration count when searching for next run date

$order

private static array<string|int, mixed> $order = array(self::YEAR, self::MONTH, self::DAY, self::WEEKDAY, self::HOUR, self::MINUTE)

Order in which to test of cron parts

Methods

__construct()

Parse a CRON expression

public __construct(string $expression, FieldFactory $fieldFactory) : mixed
Parameters
$expression : string

CRON expression (e.g. '8 * * * *')

$fieldFactory : FieldFactory

Factory to create cron fields

Return values
mixed

__toString()

Helper method to output the full expression.

public __toString() : string
Return values
string

Full CRON expression

factory()

Factory method to create a new CronExpression.

public static factory(string $expression[, FieldFactory $fieldFactory = null ]) : CronExpression
Parameters
$expression : string

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

$fieldFactory : FieldFactory = null

Field factory to use

Return values
CronExpression

getExpression()

Get all or part of the CRON expression

public getExpression([string $part = null ]) : string|null
Parameters
$part : string = null

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

Return values
string|null

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

getMultipleRunDates()

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

public getMultipleRunDates(int $total[, string|DateTime $currentTime = 'now' ][, bool $invert = false ][, bool $allowCurrentDate = false ]) : array<string|int, mixed>
Parameters
$total : int

Set the total number of dates to calculate

$currentTime : string|DateTime = 'now'

Relative calculation date

$invert : bool = false

Set to TRUE to retrieve previous dates

$allowCurrentDate : bool = false

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

Return values
array<string|int, mixed>

Returns an array of run dates

getNextRunDate()

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

public getNextRunDate([string|DateTime $currentTime = 'now' ], int $nth[, bool $allowCurrentDate = false ]) : DateTime
Parameters
$currentTime : string|DateTime = 'now'

Relative calculation date

$nth : int

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.

$allowCurrentDate : bool = false

Set to TRUE to return the current date if it matches the cron expression.

Tags
throws
RuntimeException

on too many iterations

Return values
DateTime

getPreviousRunDate()

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

public getPreviousRunDate([string|DateTime $currentTime = 'now' ], int $nth[, bool $allowCurrentDate = false ]) : DateTime
Parameters
$currentTime : string|DateTime = 'now'

Relative calculation date

$nth : int

Number of matches to skip before returning

$allowCurrentDate : bool = false

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

Tags
throws
RuntimeException

on too many iterations

see
CronExpression::getNextRunDate
Return values
DateTime

isDue()

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.

public isDue([string|DateTime $currentTime = 'now' ]) : bool
Parameters
$currentTime : string|DateTime = 'now'

Relative calculation date

Return values
bool

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

isValidExpression()

Validate a CronExpression.

public static isValidExpression(string $expression) : bool
Parameters
$expression : string

The CRON expression to validate.

Tags
see
CronExpression::factory
Return values
bool

True if a valid CRON expression was passed. False if not.

setExpression()

Set or change the CRON expression

public setExpression(string $value) : CronExpression
Parameters
$value : string

CRON expression (e.g. 8 * * * *)

Tags
throws
InvalidArgumentException

if not a valid CRON expression

Return values
CronExpression

setMaxIterationCount()

Set max iteration count for searching next run dates

public setMaxIterationCount(int $maxIterationCount) : CronExpression
Parameters
$maxIterationCount : int

Max iteration count when searching for next run date

Return values
CronExpression

setPart()

Set part of the CRON expression

public setPart(int $position, string $value) : CronExpression
Parameters
$position : int

The position of the CRON expression to set

$value : string

The value to set

Tags
throws
InvalidArgumentException

if the value is not valid for the part

Return values
CronExpression

getRunDate()

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

protected getRunDate([string|DateTime $currentTime = null ], int $nth[, bool $invert = false ][, bool $allowCurrentDate = false ]) : DateTime
Parameters
$currentTime : string|DateTime = null

Relative calculation date

$nth : int

Number of matches to skip before returning

$invert : bool = false

Set to TRUE to go backwards in time

$allowCurrentDate : bool = false

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

Tags
throws
RuntimeException

on too many iterations

Return values
DateTime

Search results