Comments (4)
The lib is based on RFC 5545 so invalid dates generated while iterating the rule are ignored. However in your example you would easily get the last day of the month with BYMONTHDAY=-1
instead.
This behavior is not configurable, and SKIP
has not been implemented - in fact to be honest I hadn't heard about RFC 7529 until now.
from php-rrule.
The example I used was misleading. I may want another specific date (when available) other than simply the last day.
Example - 30th of every month, fallback to last day of month:
2013-01-30, 2013-02-28, 2013-03-30, 2013-04-30, 2013-05-30
Example - 29th of every month, fallback to last day of month:
2013-01-29, 2013-02-28, 2013-03-29, 2013-04-29, 2013-05-29
so BYMONTHDAY=-1
won't work.
Is there any hope that RFC 7529 might be integrated(unsure of word choice) in the future?
from php-rrule.
Did you try RSet
? Because I think this could be achieved with the RSet
class that allows combining multiple rules, e.g. "29th of every month" + "every last day of February". While I agree it's not as elegant, it's nevertheless doable.
Is there any hope that RFC 7529 might be integrated(unsure of word choice) in the future?
As much as I would like to say yes, I honestly believe this is highly unlikely. The problem is that a date such as 30 February doesn't not exists. It's not "skipped" by the algorithm (and we could somehow modify it to, let's say, replace it by the previous valid date instead of "skipping" it), no, instead it isn't considered at all. So to implement SKIP
would require (I think, based on a quick assessment) a major rewrite of the core algorithm. On top of that, most helpers functions (such as occursAt
) would also need to be rewritten because a date that does not match the rule according to RFC 5545, actually could maybe match the rule according to RFC 7529 depending on the SKIP
parameter. The cherry on top of the cake is that the RFC states that SKIP
must only be used when RSCALE
is present, and that comes with a gazillion of other issues...
The use case for this SKIP
is extremely narrow (if I understand correctly is only about leap days and "last day of the month" type of rules) so I don't think it's worth such an extensive rewrite and all the problems associated with it.
from php-rrule.
I understand, thank you for the consideration.
I do believe I could make something work with RSet, and that might be what I end up doing ultimately.
from php-rrule.
Related Issues (20)
- Humanreadable gets monthly wrong HOT 4
- addExRule not working for me HOT 4
- Drop support for PHP < 7.3 HOT 2
- Daylight Savings Time issue with PHP 8.1 HOT 13
- How to create Rrule for every day from X to Y? HOT 4
- How to use exdate with byhour? HOT 3
- Question: Performance optimization when calculating occurrences using multiple rules HOT 3
- exRule and addRule conflict HOT 3
- More forgiving DTSTART behavior when using only date for UNTIL HOT 2
- Nested exrules HOT 2
- occursAt sometimes failing HOT 2
- Problem with getOccurrencesAfter HOT 9
- Removing all dates that are inside a DatePeriod from Rset HOT 1
- bi-weekly occurance wrong HOT 3
- dtstart vs. Repeat Dates / Current Time Not Considered in Calculation HOT 5
- humanreadable not so much HOT 2
- Looking for a way to add DTEND HOT 1
- Exrul not working
- Add alias methods for better reading of code HOT 1
- Legacy Code - Can I 'require_once' instead of composer ? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from php-rrule.