stringtranslate.com

iCalendario

La especificación de objeto principal de programación y calendario de Internet ( iCalendar ) es un tipo de medio que permite a los usuarios almacenar e intercambiar información de calendario y programación, como eventos, tareas pendientes, entradas de diario e información de disponibilidad, [1] y junto con su Los estándares asociados han sido la piedra angular de la estandarización y la interoperabilidad de los calendarios digitales entre diferentes proveedores. Los archivos formateados según la especificación suelen tener la extensión .ics . Con software de soporte, como un lector de correo electrónico o una aplicación de calendario , los destinatarios de un archivo de datos de iCalendar pueden responder al remitente fácilmente o contraproponer otra fecha/hora de reunión. El formato de archivo se especifica en un estándar de Internet propuesto (RFC 5545) para el intercambio de datos de calendario. El estándar y el tipo de archivo a veces se denominan "iCal", que era el nombre del programa de calendario de Apple Inc. hasta 2012 (ver iCal ), que proporciona una de las implementaciones del estándar.

iCalendar es utilizado y respaldado por muchos productos, incluidos:

También vale la pena señalar que es parcialmente compatible con Microsoft Outlook y Novell GroupWise .

iCalendar está diseñado para ser independiente del protocolo de transporte. Por ejemplo, ciertos eventos se pueden enviar por correo electrónico tradicional o se pueden compartir y editar archivos de calendario completos utilizando un servidor WebDav o SyncML . Los servidores web simples (que utilizan sólo el protocolo HTTP) se utilizan a menudo para distribuir datos de iCalendar sobre un evento y publicar las horas punta de un individuo. Los editores pueden incrustar datos de iCalendar en páginas web utilizando hCalendar , una representación en microformato 1:1 de iCalendar en HTML semántico (X) .

Historia

Componentes de iCalendar y sus propiedades

iCalendar fue creado por primera vez en 1998 [3] por el Grupo de Trabajo de Calendario y Programación del Grupo de Trabajo de Ingeniería de Internet , presidido por Anik Ganguly de Open Text Corporation , y sus autores fueron Frank Dawson de Lotus Development Corporation y Derik Stenerson de Microsoft Corporation . Los archivos de datos de iCalendar son archivos de texto sin formato con la extensión .ics o .ifb (solo para archivos que contienen información de disponibilidad). RFC 5545 reemplazó a RFC 2445 en septiembre de 2009 y ahora define el estándar.

iCalendar se basa en gran medida en el vCalendar anterior del Internet Mail Consortium (IMC). [4] Tiene la extensión de archivo .vcs. Después del lanzamiento de iCalendar, Internet Mail Consortium declaró que "espera que todos los desarrolladores de vCalendar aprovechen estos nuevos estándares abiertos y hagan que su software sea compatible tanto con vCalendar 1.0 como con iCalendar". [5]

El memorando "Protocolo de acceso al calendario" ( RFC 4324) fue un intento inicial de crear un sistema universal para crear calendarios en tiempo real, pero finalmente fue abandonado. En cambio, iCalendar experimentó cierta adopción para tales propósitos con extensiones ad hoc como GroupDAV y CalDAV que surgieron como estándares informales y vieron cierta adopción en paquetes de software tanto de cliente como de servidor .

Un primer esfuerzo para simplificar los estándares de iCalendar por parte del "Grupo de trabajo de programación y calendario" del IETF (ietf-calsify WG) finalizó en enero de 2011 sin haber sido adoptado. [6] [7] El trabajo fue luego retomado por el "Grupo de Trabajo de Extensiones de Calendario" (ietf-calext WG). [8]

Diseño

Los datos de iCalendar tienen el tipo de contenido MIMEtext/calendar . La extensión de nombre de archivo ics se debe usar para archivos que contienen información de calendario y programación, ifb para archivos con información de tiempo libre u ocupado consistente con este tipo de contenido MIME. Los códigos de tipo de archivo equivalentes en los entornos del sistema operativo Apple Macintosh son iCal e iFBf .

De forma predeterminada, iCalendar utiliza el juego de caracteres UTF-8 ; se puede especificar un juego de caracteres diferente utilizando el parámetro MIME "charset" (si el método de transporte utilizado admite MIME, como correo electrónico o HTTP ). Cada línea termina en CR + LF (en hexadecimal : 0D0A ). Las líneas deben limitarse a 75 octetos (no caracteres). Cuando un elemento de datos es demasiado largo para caber en una sola línea, puede continuar en las líneas siguientes comenzando las líneas de continuación con un carácter de espacio (en hexadecimal: 20) o un carácter de tabulación (en hexadecimal: 09). Los avances de línea reales en los elementos de datos se codifican como una barra invertida seguida de la letra n o N (los bytes 5C 6E o 5C 4E en UTF-8).

El formato iCalendar está diseñado para transmitir datos basados ​​en calendario, como eventos, e intencionalmente no describe qué hacer con esos datos. Por lo tanto, es posible que se necesite otra programación para negociar qué hacer con estos datos. Un estándar complementario, "iCalendar Transport-Independent Interoperability" (iTIP) (RFC 2446), define un protocolo para intercambiar objetos iCalendar para calendarios y programación colaborativos entre "usuarios de calendario" (CU) facilitados por un "organizador" que inicia el intercambio de datos. . Este estándar define métodos como PUBLISH, REQUEST, REPLY, ADD, CANCEL, REFRESH, COUNTER(negociar un cambio en la entrada) y DECLINE-COUNTER(rechazar la contrapropuesta). Otro estándar complementario, el "Protocolo de interoperabilidad basado en mensajes de iCalendar (iMIP)" (RFC 2447), define un método estándar para implementar iTIP en transportes estándar basados ​​en correo electrónico de Internet. La "Guía para el calendario de Internet" (RFC 3283) explica cómo iCalendar interactúa con otros lenguajes informáticos de calendario (actuales y futuros).

El elemento de nivel superior en iCalendar es el objeto principal de calendario y programación, una colección de información de calendario y programación. Normalmente, esta información constará de un único objeto iCalendar. Sin embargo, se pueden agrupar varios objetos de iCalendar. La primera línea debe ser BEGIN:VCALENDARy la última línea debe ser END:VCALENDAR; el contenido entre estas líneas se denomina "cuerpo ical". El cuerpo debe incluir las propiedades de calendario " PRODID " y " VERSION ". Además, debe incluir al menos un componente de calendario. [9]

VERSION:1.0se utiliza para especificar que los datos están en el antiguo formato vCalendar. La VERSIÓN es 2.0 para el formato actual de iCalendar a partir de 2016.

El cuerpo del objeto iCalendar (el icalbody) contiene propiedades de calendario de una sola línea que se aplican a todo el calendario, así como uno o más bloques de múltiples líneas, cada una de las cuales define un componente del calendario , como un evento, entrada de diario, alarma o uno de varios otros tipos. A continuación se muestra un ejemplo sencillo de un objeto iCalendar con un único calendario que contiene un único componente de calendario , un evento de " Fiesta del Día de la Bastilla " que comienza a las 5 p. m. del 14 de julio de 1997 y finaliza a las 4 a. m. de la mañana siguiente: [10]

COMIENZO:VCALENDARIOVERSIÓN:2.0PRODID:-//hacksw/handcal//NONSGML v1.0//ESCOMIENZO: VEVENTOUID: [email protected]ORGANIZADOR;CN=John Doe:MAILTO:[email protected]DTINICIO:19970714T170000ZDTEND:19970715T040000ZRESUMEN:Fiesta del Día de la BastillaGEO:48.85299;2.36885FINAL: VEVENTOFINAL: VCALENDARIO

El campo UID distribuye actualizaciones cuando cambia un evento programado. Cuando el evento se genera por primera vez, se crea un identificador único global . Si se distribuye un evento posterior con el mismo UID, reemplaza al original. Un ejemplo de UID podría ser [email protected], para la quinta reunión de la clase 131 en el semestre 2 en una universidad hipotética. Los UID estilo correo electrónico ahora se consideran una mala práctica y se recomienda un UUID en su lugar. [11]

La representación más común de fecha y hora es una marca de tiempo tz como 20010911T124640Z con el formato <año (4 dígitos)><mes (2)><día (2)>T<hora (2)><minuto (2)> <segundo (2)>Z para una longitud total fija de 16 caracteres. Z indica el uso de UTC (refiriéndose a su zona horaria zulú). [12] Cuando se utilizan en las propiedades DTSTART y DTEND , las horas de inicio son inclusivas, mientras que las horas de finalización no. Esto permite que la hora de finalización de un evento sea la misma que el inicio de un evento consecutivo sin que esos eventos se superpongan y puedan crear (falsos) conflictos de programación. [13]

Los componentes incluyen:

iCalendar pretende "proporcionar la definición de un formato común para el intercambio abierto de información de calendario y programación a través de Internet". Si bien iCalendar admite ampliamente las funciones más utilizadas por los usuarios, algunas capacidades más avanzadas tienen problemas. Por ejemplo, la mayoría de los proveedores no admiten revistas ( VJOURNAL ). Los VTODO también han tenido problemas de conversión. [15]

El calendario de iCalendar tampoco es compatible con algunos calendarios no gregorianos , como los calendarios lunares utilizados en Israel y Arabia Saudita . Aunque existen asignaciones uno a uno entre la escala de calendario gregoriana y muchas otras, la falta de valores CALSCALE definidos para esos calendarios y las limitaciones en varios campos de fecha pueden hacer que el soporte nativo sea imposible. Por ejemplo, el año calendario hebreo puede contener 12 o 13 meses, y la escala del calendario japonés basada en el emperador contiene muchas eras.

Extensiones

vCalendar e iCalendar admiten extensiones de software privadas , con un prefijo "X-", algunas de las cuales son de uso común.

Algunos de estos incluyen:

Lista de componentes, propiedades y parámetros.

Otras representaciones

xCal es una representación XML de los datos de iCalendar, tal como se define en RFC  6321.

jCal es una representación JSON de los datos de iCalendar, tal como se define en RFC  7265.

hCalendar es una representación (x)HTML de un subconjunto de datos de iCalendar utilizando microformatos .

hEvent es una representación HTML de un subconjunto de datos de iCalendar que utiliza microformatos que abordan algunos problemas de accesibilidad con el formato hCalendar.

Ver también

Referencias

  1. ^ ab Desruisseaux, Bernard, ed. (Septiembre de 2009). Especificación del objeto principal de programación y calendario de Internet (iCalendar). Grupo de Trabajo de Ingeniería de Internet . doi : 10.17487/RFC5545 . RFC 5545 . Consultado el 7 de diciembre de 2018 .
  2. ^ "IBM Lotus Notes 8.5 iCalendar: interoperabilidad, implementación y aplicación". IBM DeveloperWorks . Consultado el 5 de abril de 2015 .
  3. ^ "iCalendar.org". Contenido Z. Consultado el 28 de marzo de 2018 .
  4. ^ "vCalendar: formato de intercambio de programación y calendario electrónico, versión 1.0". Consorcio de Correo de Internet . 1996-09-18. Archivado desde el original el 21 de marzo de 2016 . Consultado el 28 de marzo de 2018 .
  5. ^ "vCalendar: la base para la programación multiplataforma". Consorcio de Correo de Internet . 2006-11-26. Archivado desde el original el 6 de septiembre de 2015 . Consultado el 28 de febrero de 2016 .
  6. ^ "Simplificación de estándares de programación y calendario (calsify)". IETF . Consultado el 5 de abril de 2015 .
  7. ^ Lear, Eliot (10 de diciembre de 2010). "el fin del grupo de trabajo de calsify, no el fin de la lista de correo". Lista de correo de ietf-calsify . Archivado desde el original el 9 de diciembre de 2012 . Consultado el 5 de abril de 2015 .
  8. ^ "Extensiones de calendario (calext)". IETF . Consultado el 1 de diciembre de 2016 .
  9. ^ "Sección 3.6 Componentes del calendario". Especificación del objeto principal de programación y calendario de Internet (iCalendar). segundo. 3.6. doi : 10.17487/RFC5545 . RFC 5545 . Consultado el 1 de julio de 2020 .
  10. ^ De RFC 2445
  11. ^ "Propiedad UID". Extensiones de propiedades de iCalendar. segundo. 5.3. doi : 10.17487/RFC7986 . RFC 7986 . Consultado el 3 de octubre de 2022 .
  12. ^ "Sección 3.3.5 Fecha-Hora". Especificación del objeto principal de programación y calendario de Internet (iCalendar). segundo. 3.3.5. doi : 10.17487/RFC5545 . RFC 5545.
  13. ^ "Sección 3.6.1 Componentes del evento". Especificación del objeto principal de programación y calendario de Internet (iCalendar). segundo. 3.6.1. doi : 10.17487/RFC5545 . RFC 5545.
  14. ^ "[RFC5546] Sección 3.4 Métodos para componentes VTODO". Red de desarrolladores de Microsoft . Consultado el 7 de agosto de 2015 .
  15. ^ CalConnect, 2004
  16. ^ "[MS-OXCICAL]: Propiedad: X-WR-RELCALID". msdn.microsoft.com . Consultado el 23 de febrero de 2016 .
  17. ^ "Propiedades de iCal y vCal". Biblioteca del desarrollador Nokia Symbian^3 v1.1 . © Nokia Corporation 2011. 8 de octubre de 2009. Archivado desde el original el 9 de mayo de 2021 . Consultado el 17 de noviembre de 2023 .{{cite web}}: Mantenimiento CS1: otros ( enlace )
  18. ^ "[MS-OXCICAL]: 2.1.3 Reglas de procesamiento". aprender.microsoft.com . 2020-10-13. Archivado desde el original el 16 de noviembre de 2023 . Consultado el 16 de noviembre de 2023 .

enlaces externos