jodatime - How to make a date repeat every year for the last day of February in java for iCal google-rfc-2445 -
i need repeat date every last day of february, using joda time use rule generate dates days, weeks, months, etc. months working fine when years receive wrong outputs.
private static list<datetime> calculaterecurrentdates(datetime startdate, string recurrentrule) { list<datetime> dates = new arraylist<datetime>(); timestamp startdate = timestamp.valueof("2011-02-28 10:10:10"); string recurrentrule = "rrule:freq=yearly;count=6;interval=1;"; string leapyearrule = "rrule:freq=yearly;count=6;interval=1;bymonthday=28,29;bysetpos=-1"; try { datetimeiterable range = datetimeiteratorfactory.createdatetimeiterable(recurrentrule, startdate, datetimezone.utc, true); (datetime date : range) { dates.add(date); } } catch (parseexception e) { dates = null; logger.error(e.getmessage()); } return dates; } but receive this:
2011-02-28t10:10:10.000z
2012-02-28t10:10:10.000z
2013-02-28t10:10:10.000z
2014-02-28t10:10:10.000z
2015-02-28t10:10:10.000z
2016-02-28t10:10:10.000z
and in case in leap year this:
2012-02-29t10:10:10.000z
2012-12-29t10:10:10.000z
2013-12-29t10:10:10.000z
2014-12-29t10:10:10.000z
2015-12-29t10:10:10.000z
2016-12-29t10:10:10.000z
2017-12-29t10:10:10.000z
how write 1 rule last day of february every year?
my solution count last day of year day before march 1st. rule this:
"rrule:freq=yearly;count=6;interval=1;byyearday=-307"
Comments
Post a Comment