Esta es la situación que estamos teniendo. El usuario está en la zona horaria del Pacífico y quiere crear un evento recurrente:
Fullcalendar timeZone está configurado en 'local' y estamos convirtiendo la hora a UTC. Entonces, cuando convertimos la entrada del usuario, tenemos un objeto rrule creado así:
"rrule": { "freq": 2, "interval": 1, "byweekday": [ 0, 3 ], "dtstart": "2021-11-23T02:30:00Z", "until": "2021-11-30T04:30:00Z" }Pero el evento se retrasa un día: el evento se repite el domingo y el miércoles en lugar del lunes y el jueves.
Cuando creamos un evento donde la hora PT y la hora UTC son 'en el mismo día' (por ejemplo, de 3 p. m. a 4 p. m.), todo está bien.
Además, cuando creamos un evento no recurrente de 6:30 p. m. a 8:30 p. m., todo está bien.
La versión de Fullcalendar es 5.9.0 y la versión de rrule es 2.6.8.
¿Qué nos estamos perdiendo?
Ha especificado que el evento ocurra a las 02:30:00Z todos los lunes y jueves dentro del intervalo de fechas especificado.
Tenga en cuenta que eso es lunes y jueves en horario UTC .
En Hora del Pacífico, 02:30:00Z son las 18:30:00 del día anterior. Por lo tanto, un evento que se repite a primera hora de la mañana de un jueves en horario UTC ocurrirá en realidad un miércoles por la noche en horario del Pacífico.
Lo que hace fullCalendar es completamente correcto y lógico de acuerdo con los datos que se le han proporcionado.
Donde creo que es probable que esté su problema, es que cuando recibe esta solicitud de evento recurrente del usuario y convierte la fecha y la hora a UTC, no tiene en cuenta si ese cambio de zona horaria también afecta lógicamente los días de recurrencia. especificado. por ejemplo, asumo que en el caso mencionado anteriormente desearía cambiar los días de recurrencia un día hacia adelante, ya que la conversión UTC hace que la hora cambie al día siguiente.
Depende de cómo quieras que funcione exactamente, y obviamente no puedo ver cómo haces el proceso de conversión actualmente, así que tendré que dejarte los detalles de implementación.