# ISO 8601

El estándar ISO 8601 Data elements and interchange formats — Information interchange — Representation of dates and times (en español, «Elementos de datos y formatos de intercambio — 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 primero se escribe el año, posteriormente el mes y a continuación el día. Por ejemplo, para especificar la fecha 11 de octubre de 2024 se usa la notación «2024-10-11».

## Historia del estándar

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. Más tarde fue sustituido por una segunda edición en 2000, una tercera edición, ISO 8601:2004, publicada el 3 de diciembre de 2004, y la última edición actual (ISO 8601:2019), publicada en febrero de 2019.
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

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

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. 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
### Fechas
#### Fecha del calendario

Para representar fechas de calendario, se ha 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. El estándar no permite el formato básico con solo año y mes.
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.
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 | no se permite YYYY (2007) YY (07) | YYYY-MM (2007-11) no se aplica no se aplica |
| Representación expandida | ±YYYYYYMMDD (+0020071103) ±YYYYYYMM (+00200711) ±YYYYYY (+002007) ±YYYY (+0007) | ±YYYYYY-MM-DD (+002007-11-03) ±YYYYYY-MM (+002007-11) no se aplica no se aplica |

#### Fecha ordinal

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

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 primer 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-D (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

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

#### Hora local

Se usan siempre dos dígitos para representar la hora (entre 00 y 23), 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 medianoche 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

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:
| | Formato básico (ejemplo) | Formato extendido (ejemplo) |
| Representación completa | hhmmssZ (161805Z) | hh:mm:ssZ (16:18:05Z) |
| Representación con precisión reducida | hhmmZ (1618Z) hhZ (16Z) | hh:mmZ (16:18Z) no se aplica |
| Representación con fracción decimal | hhmmss,ssZ (161805,32Z) hhmm,mmZ (1618,09Z) hh,hhZ (16,30Z) | hh:mm:ss,ssZ (16:18:05,32Z) hh:mm,mmZ (16:18,09Z) no se aplica |

#### Hora local relativa

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

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).
| | Formato básico (ejemplo) | Formato extendido (ejemplo) |
| Representación completa | YYYYMMDDTHHMMSS (20071103T241203) | YYYY-MM-DDTHH:MM:SS (2007-11-03T24:12:03) |
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

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 (<IInicial>/<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

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

##### Representación con señaladores

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.
| | 17318 |
| 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
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.