También disponible en: English · Português · Français · العربية
Generador de archivos ICS: la fecha de fin es el día siguiente
Rellena un evento, obtén un archivo .ics válido y mira las dos cifras: el último día que has indicado y el final que anota el archivo.
¿Qué es un archivo .ics?
Un archivo .ics es un evento de calendario escrito como texto plano. Lo leen todos los programas de calendario —Google Calendar, Outlook, Calendario de Apple, Thunderbird— porque es un estándar publicado y no el formato de una sola empresa, y por eso un evento enviado como adjunto se abre en cualquier sitio. Dentro hay una lista de líneas: un título, un inicio, un final, quizá una regla de repetición, cada una escrita como un nombre, dos puntos y un valor.
También es un formato con una trampa célebre dentro, y este generador está construido para enseñártela en lugar de resolverla en silencio por ti. El final que se anota en un archivo de calendario no es el último momento del evento, sino el primer momento posterior a él: lo que el estándar llama final no inclusivo. En una reunión con hora nadie lo nota, porque un acto que termina a las 10:00 ya ha terminado a las 10:00 y eso es justo lo que uno espera. En un evento de días completos escuece, porque un festival que va de miércoles a viernes hay que escribirlo como si terminara el sábado.
La propia especificación desarrolla el ejemplo, y las cifras merecen la pena: un evento que va del 28 de junio al 8 de julio de 2007 inclusive se escribe con un final del 9 de julio. Si te equivocas, el archivo sale un día corto. No hay aviso, ningún calendario lo rechaza y el evento simplemente aparece sin su último día.
Cómo usarlo
- Describe el evento. Un título y, si quieres, un lugar y una descripción. Elige días completos o una hora concreta; si eliges hora, decide cómo debe anotarse: hora local sin anclar, un instante absoluto, o una hora de reloj en una zona con nombre que la herramienta convierte por ti.
- Indica el último día que dura. El campo pide el último día que el evento ocupa de verdad, porque eso es lo que una persona sabe. El panel de debajo muestra esa fecha junto al final que anota el archivo, que es el día siguiente. Las dos cifras están en pantalla a la vez, así que la conversión se ve en lugar de haber que fiarse de ella.
- Copia los bytes o descarga el archivo. La salida se muestra tal cual se escribe, incluido dónde se cortan y continúan las líneas largas. También puedes ir al revés: cambia al modo de lectura, pega un archivo y te dirá qué significa cada fecha y cuál es en realidad el último día.
Dos límites que no se ponen de acuerdo
El mismo formato acota dos cosas y usa criterios opuestos para cada una. El final de un evento es exclusivo, como acabamos de ver. La fecha de fin de una regla de repetición es inclusiva: el estándar dice que acota la recurrencia de manera inclusiva, así que una reunión semanal que termina el 2 de septiembre se celebra el 2 de septiembre. Pon las dos cosas en el mismo evento y estarás escribiendo una fecha que significa hasta y otra que significa hasta el final de, separadas por unas pocas líneas, sin nada en la sintaxis que las distinga.
Una repetición contada por número tiene además su propia regla callada: el inicio cuenta como la primera aparición. Pedir tres significa el inicio y dos más, no el inicio y tres más. Por eso esta herramienta enumera las fechas en lugar de contártelo: la primera fila es la fecha de inicio, y una vez que la has visto ya no vuelves a leer mal un contador.
Nada de esto es un defecto del software de nadie. Las bibliotecas que construyen estos archivos toman el final que les entregas y lo escriben, que es exactamente lo que deben hacer. El error ocurre un nivel más arriba, en la distancia entre lo que una persona quiere decir con termina el viernes y lo que el formato anota, y ninguna biblioteca puede cerrar esa distancia porque nunca llega a ver lo que querías decir.
Por qué no hay nombre de zona en el archivo
Si introduces una hora en una zona con nombre, esta herramienta calcula el instante que le corresponde y anota ese instante. No escribe el nombre de la zona en el archivo, y la razón conviene decirla claramente: el formato sí permite que una fecha cite una zona por su nombre, pero solo si el archivo lleva además la definición completa de esa zona, con cada regla de horario de verano escrita en su propio bloque. Un nombre sin definición no es un atajo, es un archivo cuyo significado depende de un programa que no puedes inspeccionar.
Anotar el instante es exacto, no necesita nada más y cualquier calendario lo mostrará en la zona de quien lo abra. Tiene un coste honesto, inevitable por el propio diseño del estándar: una reunión periódica fijada a un instante no sigue a una zona a través de un cambio de horario. Unas nueve de la mañana semanales en París, anotadas así, se leen como las ocho la semana siguiente al atraso de los relojes. Está calculado, no supuesto. Si una reunión periódica tiene que quedarse a la misma hora local todo el año, ese es el caso en que una definición de zona completa se gana su sitio.
Dos cosas menores que la herramienta resuelve en lugar de mencionar. La hora de reloj que escribas puede no existir —en primavera los relojes se la saltan— o puede ocurrir dos veces, el día que se atrasan. Ambas se avisan cuando aparecen, indicando qué lectura se ha usado, en vez de elegir una en silencio.
Lo que la herramienta no te va a decir
No comprueba que tu evento tenga sentido. Una reunión que termina antes de empezar, un título vacío, una repetición que dura un siglo: todo eso produce un archivo perfectamente válido, porque válido aquí significa bien formado y no sensato. El modo de lectura señala lo que se puede decidir a partir del texto y se detiene ahí.
Escribe un solo evento. Un archivo de calendario puede contener muchos, además de alarmas, asistentes, bloques de disponibilidad y documentos adjuntos, y este generador no cubre nada de eso. También escribe una marca de tiempo fija en lugar del momento actual, porque ese campo anota cuándo se produjo la descripción y no tiene nada que ver con cuándo ocurre el evento.
Las líneas largas se cortan y continúan porque el estándar pide líneas de como mucho 75 bytes. Bytes, no caracteres, que es la razón por la que un título en inglés puede ser casi el doble de largo que uno en español o en árabe antes de necesitar corte, y por la que una herramienta que cuenta caracteres se pasa del límite con cualquier texto acentuado sin que nada parezca mal. El contador que hay bajo la salida mide bytes, así que puedes vigilarlo.
¿Por qué es gratis?
Construir un archivo de calendario es ensamblar texto. Se ejecuta en tu navegador, así que no hay servidor de por medio, nada que medir ni cuenta que crear.
No se sube nada. Lo que escribes, y cualquier archivo que pegues para leerlo, se queda en esta pestaña.