Я вижу ошибочное поведение с шаблоном повторения по дням (например, каждый вторник и четверг).
Предположим, у меня есть событие, начинающееся в 3/12 четверга в 9:00 (21:00) Pacifi c время и повторяется каждый вторник и четверг. Pacifi c время равно UTC-0700
, поэтому дата начала мероприятия UT C - 04:00 в 3/13 - 4:00 следующего дня.
Когда генерируются мои повторения, они принимают время исходного события, но не дату. Таким образом, мои повторения генерируются по вторникам и четвергам в 04:00, что соответствует 9p PT по понедельникам и средам.
Я попытался создать события по местному (Pacifi c) времени и указать TZ-ID
, но это, похоже, не помогает.
Есть ли способ объяснить это? Я не хочу пытаться определить, будет ли проблема, и переписать шаблон повторения на лету, поскольку A) кажется очень подверженным ошибкам, а B) сделает интерфейс для редактирования шаблона повторения очень сложным.
РЕДАКТИРОВАТЬ:
Рассмотрим этот RRULE:
DTSTART:20200411T013000Z
RRULE:FREQ=WEEKLY;UNTIL=20200501T030000Z;BYDAY=FR
Он был создан, чтобы начинаться в 6:30 по тихоокеанскому времени в пятницу, 10 апреля и повторяться каждую пятницу.
При преобразовании в UT C это означает, что его дата начала 1: 30a 11 апреля.
Проблема в том, что BY_DAY=FR
заставляет создавать все дочерние события по пятницам с временем начала 1: 30а, что означает, что они начинаются в четверг вечером по горному времени.
Я не думаю, что это проблема кода, я думаю, что это проблема правила повторения BY_DAY
, вызывающего проблемы, когда время запуска начинается после полуночи UT C.
Кроме того, обратите внимание, что это пример. Очевидно, что в этом случае поле BY_DAY
не обязательно. Но если бы я хотел, чтобы это повторялось по средам и пятницам, мне это нужно, и вот тут я сталкиваюсь с проблемой.