rlanvin/php-rrule
Lightweight and fast recurrence rules for PHP (RFC 5545)
v3.0.0
13M downloads/mo
#1059 most downloaded on Packagist
rlanvin/php-rrule
What this package is like to depend on
Last release 25 days ago
29 Jul 2026
Release timing varies
gaps range from 2 weeks to 1.3 years
Nearly every release is documented
notes for 30 of 30 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
31 releases · first in 2016
1 release in the last 12 months
see the full history below
Release timeline
31 releases · Mar 2016 to Jul 2026
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
Releases
latest 31-
v3.0.029 Jul 2026 -
v2.6.025 Apr 2025 -
v2.5.221 Feb 2025 -
v2.5.123 Jun 2024Release notes
Open source →Fixed
- Fix insufficient type detection for FREQ and WKST leading to deprecation warning in tests with PHP 8.3 #149
- Fix failing tests with ICU 72.1 because of NNBSP
- Fix C.UTF8 locale support when intl isn't installed
Release notes
Open source →Fixed
- Fix insufficient type detection for FREQ and WKST leading to deprecation warning in tests with PHP 8.3 #149
- Fix failing tests with ICU 72.1 because of NNBSP
- Fix C.UTF8 locale support when intl isn't installed
-
v2.5.008 Jun 2024Release notes
Open source →Fixed
- Swedish: Corrects the spelling of monday and the grammar of enumeration partials. #134
- Spanish: Improve clarity in daily and weekly recurrence translation #147
- Dutch: weekdays and months are written in lowercase #136
- Better handle TZ with Exchange / M365 generated iCal files #143
Added
Release notes
Open source →Fixed
- Swedish: Corrects the spelling of monday and the grammar of enumeration partials. #134
- Spanish: Improve clarity in daily and weekly recurrence translation #147
- Dutch: weekdays and months are written in lowercase #136
- Better handle TZ with Exchange / M365 generated iCal files #143
Added
-
v2.4.107 Jun 2023 -
v2.4.006 Jan 2023Release notes
Open source →Fixed
- Exclude files from dist packages #110
- Improve German translation #112
- Daylight Saving Time issue with PHP 8.1 #120
Added
-
v2.3.203 May 2022Release notes
Open source →Fixed
- Fix timezone (and the entire rule) changed to uppercase if rule was created using
createdFromRfcString#103
Release notes
Open source →Fixed
- Fix timezone (and the entire rule) changed to uppercase if rule was created using
createdFromRfcString#103
- Fix timezone (and the entire rule) changed to uppercase if rule was created using
-
v2.3.122 Apr 2022Release notes
Open source →Fixed
- Fix microseconds not always removed from dtstart, causing date comparison issues with specific date input #104
Release notes
Open source →Fixed
- Fix microseconds not always removed from dtstart, causing date comparison issues with specific date input #104
-
v2.3.025 Oct 2021Release notes
Open source →Added
- Added Swedish translation #96
- Added
bin/review_translations.phpas a helper for translators and contributors - Added Hebrew translation #95
Fixed
Release notes
Open source →Added
- Added Swedish translation #96
- Added
bin/review_translations.phpas a helper for translators and contributors - Added Hebrew translation #95
Fixed
-
v2.2.209 Jan 2021Release notes
Open source →Fixed
- Fix
getOccurrencesAfterreturns empty array when$inclusiveisfalseand$limitis not set #93
- Fix
-
v2.2.109 Dec 2020 -
v2.2.001 Nov 2019Release notes
Open source →Added
Fixed
- Fix valid rules wrongly detected as not producing results, and cut short after MAX_CYCLES #78
- Fix
RRule::createFromRfcStringnot detecting RSet properly if the rule was lowercase - [internal] Replace static variables by array constants (permitted since PHP 5.6). Shouldn't break backward compatibility unless you were doing weird things with this lib in the first place.
-
v2.1.015 Jan 2019Release notes
Open source →Fixed
- Fix locale format for i18n files without
intlextension #67
Added
- Added new methods to
RSet:removeDate,clearDates,removeExDateandclearExDates#66
- Fix locale format for i18n files without
-
v2.0.014 Jan 2019 -
v2.0.0-rc113 Jan 2019 pre-releaseRelease notes
Open source →- Rewrite the core algorithm to use a native PHP generator, drop compatibility with PHP < 5.6 #43
Added
-
v1.6.313 Jan 2019 -
v1.6.217 Aug 2018 -
v1.6.113 Apr 2018 -
v1.6.011 Oct 2017 -
v1.5.115 May 2017Release notes
Open source →Fixed
- Throw exception when passing a float instead of an int (e.g. INTERVAL=1.5) instead of casting silently
- Variable name typo #34
-
v1.5.007 May 2017Release notes
Open source →Added
- Add
explicit_infiniteandinclude_startoptions tohumanReadableto respectivity omit "forever" and the start date from the sentence. - RSet constructor now accepts a string to build a RSET from a RFC string #26
- New factory method
RRule::createFromRfcString()to build either a RRule or a RSet from a string - Add a
$limitparameter togetOccurrences()andgetOccurrencesBetween()to make working with infinite rule easier - Add a
$dtstartparameter toRRuleandRSetconstsructor to specify dtstart when working with a RFC string without DTSTART.
Fixed
- When creating a RRule, the RFC parser will not accept multiple DTSTART or RRULE lines
Deprecated
RRule::parseRfcStringis deprecated. Note: it wasn't part of the documentation in the first place, but just in case someone is using it, it's not removed yet.
- Add
-
v1.4.229 Mar 2017Release notes
Open source →Fixed
humanReadable()fails if the RRule was created from a RFC string containing the timezone (e.g.DTSTART;TZID=America/New_York:19970901T090000)
-
v1.4.102 Feb 2017Release notes
Open source →Fixed
RRule::offsetGetandRSet::offsetGetthrowInvalidArgumentExceptionfor illegal offset types #22- Update exception message for UNTIL parse error #23
- Fix parser handling of UNTIL when DTSTART is not provided #25
- Accept invalid RFC strings generated by the JS lib but triggers a Notice message #25
- Rework
RRule::i18nLoad()to accept locales such asen_sgand useLocale::parseLocalewhen possible #24 - Fix
humanReadablefails withintlenabled when the timezone is "Z" #24
-
v1.4.011 Nov 2016Release notes
Open source →Added
- Add
RRule::getRule()method to return original rule array #17 - Add
RSet::getRRules(),RSet::getExRules(),RSet::getDates()andRSet::getExDates() - Tests for PHP 7.0
Fixed
- Fix a bug in
rfcStringwhen using a frequency constant (instead of a string) to create the rule #16 - Fix a undefined index bug in RFC parser
- Add
-
v1.3.109 Aug 2016Release notes
Open source →Added
- Italian translation (it) #14
Fixed
- Fixed a bug when combining values with an integer modifier and regular values in
BYDAY(example1MO,FR) - Fixed RRule created with a timestamp start date generates an invalid RFC string #15
-
v1.3.008 Jul 2016Release notes
Open source →Added
- Spanish translation (es) #12
$include_timezoneparameter toRRule::rfcString()to produce a RFC string without timezone information
Fixed
RRule::parseRfcString()is stricter and will not accept invalidDTSTARTandUNTILformats (use the array syntax in the constructor withDateTimeobjects if you need to create rules with complex combinations of timezones). #13
-
v1.2.009 Apr 2016Release notes
Open source → -
v1.1.030 Mar 2016Release notes
Open source →Added
- New class
RRule\RSet(recurrence set) that can combine multiple RRULE, EXRULE, RDATE and EXDATE. #7 - New interface
RRule\RRuleInterfaceto unifyRRuleandRSet - New methods:
isFinite(),isInfinite()
Fixed
- Fix bug preventing the iteration of multiple instances of RRule at the same time
- Fix
occursAtfailing when the date passed was a different timezone #8 - Fix bug at WEEKLY frequency with a partially filled cache in some circumstances
- Fix various reference bugs causing corruption of the cache in some circumstances (related to DateTime object being mutable)
Removed
- The alias
RRule::occursOnhas been removed (useoccursAtinstead)
- New class
-
v1.0.111 Mar 2016 -
v1.0.002 Mar 2016Release notes
Open source →Added
- First release, everything before that was unversioned (
dev-masterwas used).
- First release, everything before that was unversioned (