PackageTrack
Sign in Get early access

dragonmantank/cron-expression

CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due

v3.6.0 535M downloads/mo #82 most downloaded on composer dragonmantank/cron-expression

What this package is like to depend on

Last release 9 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

2 releases in the last 12 months

see the full history below

Release timeline

28 releases · Jul 2012 to Oct 2025
2013 2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 29
  1. v3.6.0 31 Oct 2025
    Release notes

    What's Changed

    Full Changelog: v3.5.0...v3.6.0

    Open source →
  2. v3.5.0 31 Oct 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v3.4.0...v3.5.0

    Open source →
  3. v3.4.0 09 Oct 2024
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v3.3.3...v3.4.0

    Open source →
  4. v3.3.3 10 Aug 2023
    Release notes

    [3.3.3] - 2024-08-10

    Added

    • N/A

    Changed

    • N/A

    Fixed

    Open source →
    Release notes

    Added

    • N/A

    Changed

    • N/A

    Fixed

    • Added fixes for making sure ? is not passed for both DOM and DOW (#148, thank you https://github.com/LeoVie)
    • Fixed bug in Next Execution Time by sorting minutes properly (#160, thank you https://github.com/imyip)
    Open source →
  5. v3.3.2 10 Sep 2022
    Release notes

    [3.3.2] - 2022-09-19

    Added

    • N/A

    Changed

    • Skip some daylight savings time tests for PHP 8.1 daylight savings time weirdness (#146)

    Fixed

    • Changed string interpolations to work better with PHP 8.2 (#142)
    Open source →
    Release notes

    Added

    • N/A

    Changed

    • Skip some daylight savings time tests for PHP 8.1 daylight savings time weirdness (#146)

    Fixed

    • Changed string interpolations to work better with PHP 8.2 (#142)
    Open source →
  6. v3.3.1 18 Jan 2022
    Release notes

    [3.3.1] - 2022-01-18

    Added

    • N/A

    Changed

    • N/A

    Fixed

    • Fixed issue when timezones had no transition, which can occur over very short timespans (#134)
    Open source →
    Release notes

    Added

    • N/A

    Changed

    • N/A

    Fixed

    • Fixed issue when timezones had no transition, which can occur over very short timespans (#134)
    Open source →
  7. v3.3.0 14 Jan 2022
    Release notes

    [3.3.0] - 2022-01-13

    Added

    • Added ability to register your own expression aliases (#132)

    Changed

    • Changed how Day of Week and Day of Month resolve when one or the other is * or ?

    Fixed

    • PHPStan should no longer error out
    Open source →
    Release notes

    Added

    • Added ability to register your own expression aliases (#132)

    Changed

    • Changed how Day of Week and Day of Month resolve when one or the other is * or ?

    Fixed

    • PHPStan should no longer error out
    Open source →
  8. v3.2.4 13 Jan 2022
    Release notes

    [3.2.4] - 2022-01-12

    Added

    • N/A

    Changed

    • Changed how Day of Week increment/decrement to help with DST changes (#131)

    Fixed

    • N/A
    Open source →
    Release notes

    Added

    • N/A

    Changed

    • Changed how Day of Week increment/decrement to help with DST changes (#131)

    Fixed

    • N/A
    Open source →
  9. v3.2.3 06 Jan 2022
    Release notes

    [3.2.3] - 2022-01-05

    Added

    • N/A

    Changed

    • Changed how minutes and hours increment/decrement to help with DST changes (#131)

    Fixed

    • N/A
    Open source →
    Release notes

    Added

    • N/A

    Changed

    • Changed how minutes and hours increment/decrement to help with DST changes (#131)

    Fixed

    • N/A
    Open source →
  10. v3.2.2 05 Jan 2022
    Release notes

    [3.2.2] - 2022-01-05

    Added

    • N/A

    Changed

    • Marked some methods @internal (#124)

    Fixed

    • Fixed issue with small ranges and large steps that caused an error with range() (#88)
    • Fixed issue where wraparound logic incorrectly considered high bound on range (#89)
    Open source →
    Release notes

    Added

    • N/A

    Changed

    • Marked some methods @internal (#124)

    Fixed

    • Fixed issue with small ranges and large steps that caused an error with range() (#88)
    • Fixed issue where wraparound logic incorrectly considered high bound on range (#89)
    Open source →
  11. v3.2.1 05 Jan 2022
    Release notes

    Added

    • N/A

    Changed

    • Added PHP 8.1 to testing (#125)

    Fixed

    • Allow better mixture of ranges, steps, and lists (#122)
    • Fixed return order when multiple dates are requested and inverted (#121)
    • Better handling over DST (#115)
    • Fixed PHPStan tests (#130)
    Open source →
  12. v3.2.0 05 Jan 2022
    Release notes

    Added

    • Added alias for @midnight (#117)

    Changed

    • Improved testing for instance of field in tests (#105)
    • Optimization for determining multiple run dates (#75)
    • CronExpression properties changed from private to protected (#106)

    Fixed

    • N/A
    Open source →
  13. v3.1.0 24 Nov 2020
    Release notes

    Added

    • Added CronExpression::getParts() method to get parts of the expression as an array (#83)

    Changed

    • Changed to Interfaces for some type hints (#97, #86)
    • Dropped minimum PHP version to 7.2
    • Few syntax changes for phpstan compatibility (#93)

    Fixed

    • N/A

    Deprecated

    • Deprecated CronExpression::factory in favor of the constructor (#56)
    • Deprecated CronExpression::YEAR as a formality, the functionality is already removed (#87)
    Open source →
  14. v3.0.2 13 Oct 2020

    Nothing published for this version

  15. 3.0.1 21 Aug 2020
    Release notes

    Added

    • Added support for PHP 8 (#92)

    Changed

    • N/A

    Fixed

    • N/A
    Open source →
  16. v3.0.0 25 Mar 2020
    Release notes

    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.

    Added

    • Additional docblocks for IDE and documentation
    • Added phpstan as a development dependency
    • Added a Cron\FieldFactoryInterface to make migrations easier (#38)

    Changed

    • Changed some DI testing during TravisCI runs
    • \Cron\CronExpression::determineTimezone() now checks for \DateTimeInterface instead of just \DateTime
    • Errors with fields now report a more human-understandable error and are 1-based instead of 0-based
    • Better support for \DateTimeImmutable across the library by typehinting for \DateTimeInterface now
    • Literals should now be less case-sensative across the board
    • Changed logic for when both a Day of Week and a Day of Month are supplied to now be an OR statement, not an AND

    Fixed

    • Fixed infinite loop when determining last day of week from literals
    • Fixed bug where single number ranges were allowed (ex: 1/10)
    • Fixed nullable FieldFactory in CronExpression where no factory could be supplied
    • Fixed issue where logic for dropping seconds to 0 could lead to a timezone change
    Open source →
  17. v2.3.1 13 Oct 2020
    Release notes

    Added

    • Added support for PHP 8 (#92)

    Changed

    • N/A

    Fixed

    • N/A
    Open source →
  18. v2.3.0 31 Mar 2019
    Release notes

    Added

    • Added support for DateTimeImmutable via DateTimeInterface
    • Added support for PHP 7.3
    • Started listing projects that use the library

    Changed

    • Errors should now report a human readable position in the cron expression, instead of starting at 0

    Fixed

    • N/A
    Open source →
  19. v2.2.0 06 Jun 2018
    Release notes

    Added

    • Added support for steps larger than field ranges (#6)
    Open source →
  20. v2.1.0 06 Apr 2018
    Release notes

    Added

    • N/A

    Changed

    • Upgraded to PHPUnit 6 (#2)

    Fixed

    • Refactored timezones to deal with some inconsistent behavior (#3)
    • Allow ranges and lists in same expression (#5)
    • Fixed regression where literals were not converted to their numerical counterpart (#)
    Open source →
  21. v2.0.0 12 Oct 2017
    Release notes

    Added

    • N/A

    Changed

    • Dropped support for PHP 5.x
    • Dropped support for the YEAR field, as it was not part of the cron standard

    Fixed

    • Reworked validation for all the field types
    • Stepping should now work for 1-indexed fields like Month (#153)
    Open source →
  22. v1.2.1 23 Jan 2017

    Nothing published for this version

  23. v1.2.0 no date
    Release notes

    Added

    • Added IDE, CodeSniffer, and StyleCI.IO support

    Changed

    • Switched to PSR-4 Autoloading

    Fixed

    • 0 step expressions are handled better
    • Fixed DayOfMonth validation to be more strict
    • Typos
    Open source →
  24. v1.1.0 26 Jan 2016
    Release notes

    Added

    • Support for non-hourly offset timezones
    • Checks for valid expressions

    Changed

    • Max Iterations no longer hardcoded for getRunDate()
    • Supports DateTimeImmutable for newer PHP verions

    Fixed

    • Fixed looping bug for PHP 7 when determining the last specified weekday of a month
    Open source →
  25. v1.0.4 11 Jan 2015

    Nothing published for this version

  26. v1.0.3 23 Nov 2013
    Release notes

    Added

    • Now supports expressions with any number of extra spaces, tabs, or newlines

    Changed

    • Using static instead of self in CronExpression::factory

    Fixed

    • Fixes issue #28 where PHP increments of ranges were failing due to PHP casting hyphens to 0
    • Only set default timezone if the given $currentTime is not a DateTime instance (#34)
    Open source →
  27. v1.0.2 05 Apr 2013

    Nothing published for this version

  28. v1.0.1 06 Mar 2013

    Nothing published for this version

  29. v1.0.0 15 Jul 2012

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive