Tengo una lista de plazos para varios proyectos. Una vez cada 3 meses, descargo los plazos de los próximos 3 meses como archivos ICS y los agrego a mi calendario. Debido a que solo los descargo una vez cada 3 meses, tengo un problema con respecto al horario de verano (DST). Aquí hay un ejemplo del problema:
He tenido problemas para determinar cuál sería la mejor manera de resolver este problema:
AT TIME ZONE sin éxito. Me encuentro con el mismo problema que tuve en JavaScript: establece la hora en la zona horaria especificada sin tener en cuenta si la fecha se verá afectada o no por el horario de verano en el futuro.Actualizar la publicación para incluir más información
La información de la fecha límite ( PROJECT_NAME y DUE_DATE ) se extrae de una base de datos PostgreSQL. La fecha de vencimiento se almacena como un valor de FECHA como este: 05-MAR-22 .
Para agregar el tiempo, he tomado dos enfoques:
select ('06-JUN-2022'::date + time '9:00') at time zone 'America/New_York' deadline.DUE_DATE = deadline.DUE_DATE.split("T"[0] += " 09:00:00";Pero ninguno de los métodos me ha ayudado a resolver el problema de la zona horaria.
El microservicio de JavaScript establece los siguientes campos:
BEGIN:VEVENT UID:[ UID ] SUMMARY:[ PROJECT_NAME ] DTSTAMP:[ DTSTAMP ] DTSTART:[ DTSTART ] BEGIN:VALARM ACTION:DISPLAY TRIGGER:[ TRIGGER ] END:VALARM DURATION:PT END:VEVENTal que parece que le faltan algunos detalles importantes para configurar la zona horaria.
Tiene la opción de incrustar información de zona horaria en el archivo ICS utilizando el parámetro TZID y el componente VTIMEZONE de los archivos ICS. El componente VTIMEZONE requiere agregar información sobre las reglas de DST al archivo, y cada TZID único debe tener un componente VTIMEZONE correspondiente. Puede usar tzurl.org que ha generado definiciones de VTIMEZONE para cada zona horaria. Para obtener más información sobre cómo hacer esto, puede consultar estas preguntas relacionadas:
Me falta algo de conocimiento sobre los detalles de implementación específicos de Microsoft Outlook y el calendario de Apple, pero estoy bastante seguro de que tendrán en cuenta esa información relevante del archivo ICS.
Mire cómo está generando los archivos ICS con Javascript. Parece que la zona horaria se está configurando en la zona horaria anterior al horario de verano, lo que causará problemas al ver el evento después del cambio de horario de verano. De acuerdo con la especificación ics :
El uso de la hora local en un valor DATE-TIME o TIME sin el parámetro de propiedad "TZID" debe interpretarse como hora flotante, independientemente de la existencia de componentes de calendario "VTIMEZONE" en el objeto iCalendar.
Esto también puede indicar la posibilidad de que la zona horaria se esté configurando incorrectamente, porque si los componentes "TZID"/"VTIMEZONE" no se definieron, los eventos deben considerarse como "flotantes" o "la misma hora, minuto y segundo". independientemente de la zona horaria que se esté observando actualmente".