iCalendar: ЕЖЕМЕСЯЧНО RRULE без BYDAY или BYMONTHDAY

Как интерпретировать правило ежемесячного повторения только с DTSTART (без BYDAY или BYMONTHDAY)?

Согласно RFC5545 вы можете определить правило повторения только с частотой, например

DTSTART;TZID=US-Eastern:20180831T090000
RRULE:FREQ=MONTHLY

Смартфон с LineageOG (Android Calendar), по-видимому, интерпретирует это как BYMONTHDAY и показывает событие, только если наступает 31-е число месяца. IPhone явно интерпретирует это как последний день месяца и показывает событие каждый месяц (31-го, 30-го или даже 28-го). Какая интерпретация верна?

1 ответ

Возможно, iPhone "не прав", хотя rfc5545 явно не решает эту проблему https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html

Возможно, они взяли "что ожидает не технический пользователь?" подход?

Мышление Apple не так, не помогает. Было бы лучше сгенерировать RRULE, который явно понятен. Используйте BYMONTHDAY, если хотите только 31-го числа, или используйте BYDAY=-1 для последнего дня месяца

IPhone определенно не прав здесь. RFC 5545, раздел 3.3.10 четко гласит:

Информация, не содержащаяся в правиле, необходимая для определения различного времени и даты начала экземпляра повторения, получена из атрибута компонента Время начала ("DTSTART"). Например, "FREQ=YEARLY; ​​BYMONTH=1" не указывает конкретный день в месяце или времени. Эта информация будет такой же, как указано для "DTSTART".

а также

Правила повторения могут генерировать случаи повторения с недопустимой датой (например, 30 февраля) или несуществующим местным временем (например, 1:30 утра в день, когда местное время перемещается вперед на час в 1:00 утра). Такие экземпляры повторения ДОЛЖНЫ игнорироваться и НЕ ДОЛЖНЫ учитываться как часть набора повторений.

Эти два значения вместе означают, что ваше событие повторяется каждый 31-й, но только в те месяцы, у которых на самом деле есть 31 день, в противном случае экземпляр игнорируется.

В любом случае, действительно лучше четко указать намерение и всегда предоставлять BYMONTHDAY в таком случае.

Другие вопросы по тегам