ISO 8601

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

La norma ISO 8601 "Data elements and interchange formats — Information interchange — Representation of dates and times" (en español, "Elementos de datos y formatos intercambiables — Intercambio de información — Representación de fechas y horas") especifica la notación estándar utilizada para representar instantes, intervalos e intervalos recurrentes de tiempo evitando ambigüedades. Esta notación facilita la migración entre distintas plataformas.

Se sigue el criterio de especificar en orden primeramente los períodos de tiempo más largos y posteriormente los más cortos. Así, para especificar una fecha escribiremos primeramente el año, posteriormente el mes y a continuación el día. Por ejemplo, para especificar la fecha 30 de mayo de 2008, escribiremos en esta notación: 2008-05-30.

Historia del estándar[editar]

La primera especificación del estándar ISO 8601 se publicó en 1988, unificando y sustituyendo a varias normas antiguas ISO en varios aspectos de notación de fecha y hora: ISO 2014, 2015, 2711, 3307 y 4031. Ha sido reemplazado desde entonces por una segunda edición en 2000 y finalmente por la tercera edición actual, ISO 8601:2004, publicada el 3 de diciembre de 2004.

El ISO 2014 fue el estándar que introdujo originalmente la notación totalmente numérica big-endian de la fecha «YYYY-MM-DD» (donde YYYY representa el año, MM el mes y DD el día del mes); el sistema de numeración semanal del ISO fue introducido en ISO 2015, y la identificación de días por las fechas ordinales fue definida originalmente por el ISO 2711.

Ámbito de aplicación[editar]

Esta norma puede aplicarse para representar fechas del calendario gregoriano, hora diaria en el sistema de 24 horas, intervalos de tiempo e intervalos recurrentes de tiempo en estos formatos, usando siempre caracteres numéricos.

Principios generales[editar]

La fecha y la hora están organizados de más a menos significativo. Cada valor (por ejemplo, año, mes, día, hora del día) tiene un número fijo de dígitos que debe ser completado con ceros. Esto es imprescindible para evitar ambigüedades. Se recomienda el sistema de 24 horas frente al de dos mitades de 12 horas. Por ejemplo, la notación "4:30 p.m." debería ser escrita 16:30. Por consiguiente, para cada formato de fecha y hora, el orden lexicográfico corresponde al orden cronológico, excepto para los años negativos.

La representación puede darse en uno o dos formatos: el formato básico con el mínimo número de caracteres, o el formato extendido con separadores para aumentar la legibilidad.[1] El estándar permite un guion como separador entre los elementos de la fecha, y dos puntos entre horas, minutos y segundos. Por ejemplo, la fecha 6 de enero de 2006 se escribe en el formato extendido como "2006-01-06", y en el formato básico como "20060106".

Mientras que la representación completa ha de incorporar todos los elementos de la fecha u hora a representar, la representación de precisión reducida permite ignorar algunos de estos elementos, quitando siempre antes todos los elementos de tiempo menos significativos. Por ejemplo, "2004-05" es una fecha ISO 8601 válida, ya que indica el quinto mes del año 2004. Esta fecha no representa el quinto día de un mes cualquiera del año 2004.

La norma soporta, además, una representación expandida para representar años fuera del intervalo [0000-9999] y una representación decimal en la representación de horas para representar fracciones decimales en la unidad de tiempo más pequeña si se necesitara tal precisión.

Representaciones[editar]

Fechas[editar]

Fecha del calendario[editar]

Para representar fechas de calendario, se han de usar siempre 4 cifras para el año, dos para el mes y dos para el día del mes, rellenando con ceros si es necesario. Por ejemplo, para representar la fecha 3 de noviembre de 2007 se utilizará '2007' para representar el año, '11' para representar el mes de noviembre y '03' para representar el día 3 de ese mes.

La representación completa permite especificar un día concreto del calendario.

La representación de precisión reducida permite especificar un mes (YYYY-MM), un año (YYYY) o un siglo concretos.

La representación expandida permite especificar una fecha con un mayor rango (±YYYYYMMDD). La representación expandida requiere que haya un acuerdo previo de las partes que intercambian la información acerca del número de dígitos que requiere la representación del año, siendo como mínimo cuatro. Esto permite la representación de fechas fuera del rango 0000 - 9999.[2]

En la siguiente tabla se muestran las posibles representaciones y formatos recogidos en la norma para representar fechas de calendario, tomando como base para los ejemplos la fecha 3 de noviembre de 2007. En las representaciones expandidas se representan los años con 6 cifras.

formato básico (ejemplo) formato extendido (ejemplo)
representación completa YYYYMMDD (20071103) YYYY-MM-DD (2007-11-03)
representación de precisión reducida
YYYYMM (200711)
YYYY (2007)
YY (07)
YYYY-MM (2007-11)
no se aplica
no se aplica
representación expandida
±YYYYYYMMDD (+0020071103)
±YYYYYYMM (+00200711)
±YYYYYY (+002007)
±YYY (+0020)
±YYYYYY-MM-DD (+002007-11-03)
±YYYYYY-MM (+002007-11)
no se aplica
no se aplica

Fecha ordinal[editar]

La norma permite especificar una fecha ordinal, siendo ésta el número de días transcurridos en un año. Así, el 1 de enero de un año es el día 1 de ese año, y el 3 de noviembre corresponde al día 307 o 308, dependiendo de si ese año es común o bisiesto. Este número de días ha de representarse con tres dígitos.

En la siguiente tabla se muestran las representaciones de fechas ordinales, tomando como base para los ejemplos la fecha 3 de noviembre de 2007 (día 307 del año 2007). En la representaciones expandidas, se representan los años con 6 cifras.

formato básico (ejemplo) formato extendido (ejemplo)
representación completa YYYYDDD (2007307) YYYY-DDD (2007-307)
representación expandida ±YYYYYYDDD (002007307) ±YYYYYY-DDD (002007-307)

Fecha semanal[editar]

Para representar una semana del año, ésta ha de especificarse siempre con dos dígitos y precedidos del carácter 'W'. Se considera la primera semana de un año (semana W01) aquella que contiene el primer jueves de dicho año, o lo que es lo mismo, aquella que contiene el día 4 de enero. Los días de la semana se representan numéricamente con un dígito, siendo el primero día el lunes (día 1) y el último el domingo (día 7). La semana empieza siempre, por tanto, en lunes.

En la siguiente tabla se muestran las representaciones de fechas semanales, tomando como base para los ejemplos la fecha 3 de noviembre de 2007 (sábado, 44ª semana del año 2007). En la representaciones expandidas, se representan los años con 6 cifras.

formato básico (ejemplo) formato extendido (ejemplo)
representación completa YYYYWwwD (2007W446) YYYY-Www-DD (2007-W44-6)
representación con precisión reducida YYYYWww (2007W44) YYYY-Www (2007-W44)
representación expandida
±YYYYYYWwwD (+002007W446)
±YYYYYYWww (+002007W44)
±YYYYYY-Www-D (+002007-W44-6)
±YYYYYY-Www (+002007-W44)

Horas del día[editar]

La hora ha de ser representada siempre bajo el sistema 24h, esto es, el número de horas transcurridas desde media noche. No se permite el formato 12h donde se especifican las horas transcurridas desde media noche hasta mediodía o desde mediodía hasta media noche.

Hora local[editar]

Se usan siempre dos dígitos para representar la hora (entre 00 y 24), dos para los minutos dentro de una hora (entre 00 y 59) y otros dos para los segundos dentro de un minuto (entre 00 y 59).

En las representaciones decimales, las partes que intervienen en el intercambio de la información han de acordar previamente la precisión.

En la siguiente tabla se muestran las representaciones de la hora del día, tomando como base para los ejemplos el instante trece horas (la una de la tarde), 18 minutos, cinco segundos y 32 centésimas de segundo). En la representaciones decimales, se adopta como ejemplo una precisión de dos cifras decimales.

formato básico (ejemplo) formato extendido (ejemplo)
representación completa hhmmss (131805) hh:mm:ss (13:18:05)
representación con precisión reducida
hhmm (1318)
hh (13)
hh:mm (13:18)
no se aplica
representación con fracción decimal
hhmmss,ss (131805,32)
hhmm,mm (1318,09)
hh,hh (13,30)
hh:mm:ss,ss (13:18:05,32)
hh:mm,mm (13:18,09)
no se aplica

Cuando no quede claro que se está representando una hora local, se hará uso del señalador de hora, que consiste en preceder cada una de estas representaciones con el carácter 'T'. Este señalador es opcional en otros casos. Por ejemplo: T131805, o T1318,09.

La media noche puede representarse completamente como 000000 o como 240000, según interese referirse al principio o al final de un día, siendo normalmente preferible la primera opción. Se permite cualquier otra variación de representación o formato de los listados.

Hora UTC[editar]

Se pueden expresar las horas del día en el sistema UTC, añadiéndole el carácter 'Z'. Este carácter es el señalador UTC.

Algunos ejemplos de hora UTC:

  • Representación completa: 161805Z, 16:18:05Z.
  • Representación con precisión reducida: 1618Z, 16:18Z, 16Z.
  • Representación con fracción decimal: 161805,32Z, 16:18:05,32Z, 1618,09Z, 16:18,09Z, 16,30Z

Hora local relativa[editar]

Para expresar la hora local relativa a UTC se hará expresando la hora local en cualquiera de sus posibles representaciones y añadiéndole a continuación la diferencia horaria entre la hora local y UTC. Siempre han de coincidir el formato (básico o extendido) de la hora local y la diferencia horaria.

La diferencia horaria se expresa con el signo '+' o '-' seguido de las cifras para la hora o las cifras para la hora y los minutos.

En la siguiente tabla se muestran las posibles representaciones de las diferencias horarias, tomando como ejemplo base la diferencia horaria con Argentina (UTC-3).

formato básico (ejemplo) formato extendido (ejemplo)
±hhmm (-0300)
±hh (-03)
±hh:mm (-03:00)
no se aplica

Algunos ejemplos de hora local relativa:

  • Representación completa: 131805-0300, 13:18:05-03:00, 131805-03, 13:18:05-03.
  • Representación con precisión reducida: 1318-0300, 13:18-03:00, 1318-03, 13:18-03, 13-0300, 13-03:00, 13-03.
  • Representación con fracción decimal: 131805,32-0300, 13:18:05,32-03:00, 1318,09-03, 13:18,09-03, 13,30-0300, 13,30-03:00.

Fechas y horas conjuntas[editar]

Para representar una fecha y hora del día de manera conjunta, no hay más que expresar para un formato concreto (básico o extendido) una de las expresiones posibles para la fecha (de calendario, ordinal o semanal) en representación completa o expandida, el señalador de hora 'T' y una de las representaciones posibles para la hora del día (ya sea local o UTC).

No puede hacerse uso de las representaciones de precisión reducida en las fechas, ni mezclarse el formato básico con el extendido.

Algunos ejemplos de fecha y hora conjuntas (en negrilla las representaciones completas):

  • Fecha de calendario
    • Hora local: 20071103T131805, 2007-11-03T13:18:05, +0020071103T1318, +002007-11-03T13:18, 20071103T13,30 2007-11-03T13,30.
    • Hora UTC: 20071103T161805Z, 2007-11-03T16:18:05Z, 20071103T16Z, 2007-11-03T16Z, +0020071103T161805,32Z, +002007-11-03T16:18:05,32Z.
    • Hora local relativa: 20071103T131805-0300, 2007-11-03T13:18:05-03:00, +0020071103T1318-03, +002007-11-03T13:18-03, 20071103T1318,09-0300, 2007-11-03T13:18,09-03:00.
  • Fecha ordinal
    • Hora local: 2007307T131805, 2007-307T13:18:05, 2007307T13, 2007-307T13, +002007307T131805,32, +002007-307T13:18:05,32.
    • Hora UTC: 2007307T161805Z, 2007-307T16:18:05Z, +002007307T1618Z, +002007-307T16:18Z, 2007307T1618,09Z, 2007-307T16:18,09Z.
    • Hora local relativa: 2007307T131805-03, 2007-307T13:18:05-03, 2007307T13-0300, 2007-307T13-03:00, +002007307T13,30-03, +002007-307T13,30-03.
  • Fecha semanal
    • Hora local: 2007W446T131805, 2007-W44-6T13:18:05, +002007W446T1318, +002007-W44-6T13:18, 2007W446T1318,09, 2007-W44-6T13:18,09.
    • Hora UTC: 2007W446T161805Z, 2007-W44-6T16:18:05Z, 2007W446T16Z, 2007-W44-6T16Z, +002007W446T16,30Z, +002007-W44-6T16,30Z.
    • Hora local relativa: 2007W446T131805-0300, 2007-W44-6T13:18:05-03:00, +002007W446T1318-03, +002007-W44-6T13:18-03, 2007W446T131805,32-0300, 2007-W44-6T13:18:05,32-03:00.

Intervalos[editar]

Un intervalo de tiempo se representa normalmente mediante dos componentes separados por el carácter separador '/'. Cada componente puede consistir en un instante de tiempo inicial (<IInicial>), tiempo final (<IFinal>) o una duración (<Duracion>).

Las posibilidades de representación con la combinación de componentes son las siguientes, y deberá respetarse el orden:

  • especificando un instante inicial y otro final (<IInicial>/<IFinal>),
  • especificando un instante inicial y una duración (<IIinicial>/<Duracion>),
  • especificando una duración y un instante final (<Duracion>/<IFinal>).

Opcionalmente se puede especificar un intervalo con sólo la duración y estableciendo una información de contexto.

El formato de ambos componentes ha de ser el mismo: básico o extendido.

Duración[editar]

La duración se ha de representar siempre precedida del señalador 'P'.

Representación con señaladores[editar]

Tanto para el formato básico como para el extendido, una duración se representará, por omisión, mediante un señalador específico para cada componente de tiempo y la duración de tiempo de correspondiente de ese componente, de la siguiente manera:

  • nnY para especificar nn años,
  • nnM para especificar nn meses,
  • nnD para especificar nn días,
  • T para separar los componentes anteriores de los siguientes (exceptuando semanas),
  • nnH para especificar nn horas,
  • nnM para especificar nn minutos,
  • nnS para especificar nn segundos.

O, si se quieren especificar semanas:

  • nnY para especificar nn años,
  • nnW para especificar nn semanas.

Es posible representar una duración con precisión reducida omitiendo los componentes menos significativos. El componente menos significativo representado puede expresarse, si se requiere, como una fracción decimal.

Además, si el número de años, meses, días, horas, minutos o segundos es igual a cero, podrá omitirse este número y su correspondiente señalador, siempre y cuando quede al menos un componente. (No se permite especificar una duración cero únicamente con «P»).

Si con la reducción de precisión se omiten los componentes de horas, minutos y segundos, también se ha de omitir el señalador T.


formato básico y extendido (ejemplo)
representación completa
PnnYnnMnnDTnnHnnMnnS (P1Y0M27DT11H9M11S)
PnnYnnW (P1Y3W)
representación de precisión reducida
PnnYnnMnnDTnnHnnM (P1Y0M27DT11H9M)
PnnYnnMnnDTnnH (P1Y0M27DT11H)
PnnYnnMnnD (P1Y0M27D)
PnnYnnM (P1Y0M)
PnnY (P1Y)
representación con fracción decimal
PnnYnnMnnDTnnHnnMnn,nnS (P1Y0M27DT11H9M11,88S)
PnnYnnMnnDTnnHnn,nnM (P1Y0M27DT11H9,20M)
PnnYnnMnnDTnn,nnH (P1Y0M27DT11,15H)
PnnYnnMnn,nnD (P1Y0M27,46D)
PnnYnn,nnM (P1Y0,92M)
PnnYnn,nnW (P1Y0,86W)
PnnY (P1,00Y)
representación omitiendo componentes en cero
PnnYnnDTnnHnnMnnS (P1Y27DT11H9M11S)
PnnYnnDTnnHnnM (P1Y27DT11H9M)
PnnYnnDTnnH (P1Y27DT11H)
PnnYnnD (P1Y27D)
Representación alternativa[editar]

Alternativamente, se pueden expresar las duraciones de la misma manera que las fechas de calendario y ordinales y las horas locales con la restricción de no sobrepasar los valores de 12 meses, 31 días, 24 horas, 60 minutos y 60 segundos para el componente correspondiente.

Esta representación no admite duración de semanas sin especificar días.

Véase también[editar]

Notas y referencias[editar]

  1. Numeric representation of Dates and Time
  2. Sección 3.5 del estándar ISO 8601:2004

Enlaces externos[editar]