NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #83 most downloaded on Packagist
CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due
Last release 11 months ago
31 Oct 2025
Ships fairly regularly
a new release about every 10 months
Most releases are documented
notes for 23 of 29 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
29 releases · first in 2012
Dropped support for PHP older than 8.2 by @dragonmantank in #211
Full Changelog: v3.5.0...v3.6.0
Remove webmozart assert dependency by @8ctopus in #192
Full Changelog: v3.4.0...v3.5.0
One column per quarter.
chore: improve ci, fix deprecations, add php 8.2 tests by @Chris53897 in #163
/phpstan.neon entry in .gitattributes by @TimWolla in #162Full Changelog: v3.3.3...v3.4.0
Added fixes for making sure ? is not passed for both DOM and DOW ( #148 , thank you https://github.com/LeoVie )
? is not passed for both DOM and DOW (#148, thank you https://github.com/LeoVie)Skip some daylight savings time tests for PHP 8.1 daylight savings time weirdness
Fixed issue when timezones had no transition, which can occur over very short timespans
Added ability to register your own expression aliases
* or ?Changed how Day of Week increment/decrement to help with DST changes
Changed how minutes and hours increment/decrement to help with DST changes
Fixed issue with small ranges and large steps that caused an error with range()
Allow better mixture of ranges, steps, and lists
Improved testing for instance of field in tests
@midnight (#117)CronExpression properties changed from private to protected (#106)Deprecated CronExpression::factory in favor of the constructor
CronExpression::getParts() method to get parts of the expression as an array (#83)CronExpression::factory in favor of the constructor (#56)CronExpression::YEAR as a formality, the functionality is already removed (#87)Nothing published for this version
### Added - Added support for PHP 8 (#92) ### Changed - N/A ### Fixed - N/A
MAJOR CHANGE - In previous versions of this library, setting both a "Day of Month" and a "Day of Week" would be interpreted as an AND statement, not a
MAJOR CHANGE - In previous versions of this library, setting both a "Day of Month" and a "Day of Week" would be interpreted as an AND statement, not an OR statement. For example:
30 0 1 * 1
would evaluate to "Run 30 minutes after the 0 hour when the Day Of Month is 1 AND a Monday" instead of "Run 30 minutes after the 0 hour on Day Of Month 1 OR a Monday", where the latter is more inline with most cron systems. This means that if your cron expression has both of these fields set, you may see your expression fire more often starting with v3.0.0.
Cron\FieldFactoryInterface to make migrations easier (#38)\Cron\CronExpression::determineTimezone() now checks for \DateTimeInterface instead of just \DateTime\DateTimeImmutable across the library by typehinting for \DateTimeInterface now1/10)### Added - Added support for PHP 8 (#92) ### Changed - N/A ### Fixed - N/A
Added support for DateTimeImmutable via DateTimeInterface
Added support for steps larger than field ranges
Refactored timezones to deal with some inconsistent behavior
Dropped support for the YEAR field, as it was not part of the cron standard
Nothing published for this version
Added IDE, CodeSniffer, and StyleCI.IO support
DayOfMonth validation to be more strictSupport for non-hourly offset timezones
getRunDate()Nothing published for this version
Now supports expressions with any number of extra spaces, tabs, or newlines
CronExpression::factoryNothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →