ISO 8601: expresiones temporales inequívocas
Las indicaciones temporales son un elemento clave para coordinarse y llegar a acuerdos. En la era de la globalización digital, sin embargo, no es fácil hacerlas comprensibles para todos. En el mundo existen regiones y culturas con diferentes convenciones en lo que a datos temporales se refiere, lo cual pone en juego la precisión y la fiabilidad de las fechas y las horas cuando la comunicación es internacional. Precisamente para resolver este problema existe la norma ISO 8601, un estándar global que permite a personas en diferentes países coordinarse sin malentendidos.
El estándar internacional ISO 8601 da recomendaciones para formatos numéricos de fecha y otras expresiones temporales.
Puedes convertir fechas al formato ISO date que desees, bien mediante diferentes herramientas, bien usando un script. En este artículo te contamos todo lo que necesitas saber sobre este estándar para datos temporales.
Dominios web
Compra y registra tu dominio ideal - Domina el mercado con nuestra oferta 3x1 en dominios
- Tu dominio protegido con SSL Wildcard gratis
- 1 cuenta de correo electrónico por contrato
Principios básicos de la norma ISO 8601
La norma ISO 8601 establece un formato reconocido a nivel internacional para presentar datos: la forma horas-minutos-segundos o, para fechas, la forma año-mes-día. Esta estructura permite colocar las cifras directamente una tras otra, pero también se pueden usar guiones para separarlas, si se quiere facilitar su lectura. Así, en el formato básico de ISO 8601, la fecha 7 de septiembre de 2019 tendría la forma 20190907 o, en su versión con guiones, 2019-09-07. Las expresiones de horas se dividen en horas, minutos y segundos, de manera que en ISO 8601 tienen la forma 12:07:22. Con estos formatos de fecha ISO (también llamados ISO date formats), las convenciones específicas de cada país pasan a ser prescindibles, al menos en los medios electrónicos. Se unifican así las distintas expresiones y se causa menos confusión.
Otra denominación para el estándar ISO 8601 es EN 28601 (en su forma para normas de la UE). Este formato no solo sirve para indicar puntos en el tiempo, sino también periodos: para ello, el momento o fecha de inicio se marca con la letra P para separarlo del siguiente dato temporal. Por lo tanto, un periodo que comience el 6 de septiembre de 2019 a las 20 h y dure un mes, 5 días y 3 horas, por ejemplo, tendría la forma 2019-09-06T20P1M5D3H en el formato unificado ISO.
Todos los datos, como puedan ser horas, fechas o periodos, siguen un orden concreto en la norma ISO: de la unidad más grande a la más pequeña, es decir, en orden descendente. Así, siguiendo la escala natural del valor de cada unidad, una unidad más grande siempre aparecerá antes que otra más pequeña. La ventaja de este sistema es que lleva al mismo resultado tanto si se clasifican los datos según criterios lexicográficos, como si se hace de forma cronológica.
Otra denominación para el estándar ISO 8601 es EN 28601 (en su forma para normas de la UE). Este formato no solo sirve para indicar puntos en el tiempo, sino también periodos: para ello, el momento o fecha de inicio se marca con la letra P para separarlo del siguiente dato temporal. Por lo tanto, un periodo que comience el 6 de septiembre de 2019 a las 20 h y dure un mes, 5 días y 3 horas, por ejemplo, tendría la forma 2019-09-06T20P1M5D3H en el formato unificado ISO.
Todos los datos, como puedan ser horas, fechas o periodos, siguen un orden concreto en la norma ISO: de la unidad más grande a la más pequeña, es decir, en orden descendente. Así, siguiendo la escala natural del valor de cada unidad, una unidad más grande siempre aparecerá antes que otra más pequeña. La ventaja de este sistema es que lleva al mismo resultado tanto si se clasifican los datos según criterios lexicográficos, como si se hace de forma cronológica.
Elementos temporales de ISO 8601 (ISO date) en forma de tabla:
Representación según ISO 8601 | Valores posibles |
---|---|
Año (Y) | yyyy, cuatro cifras o dos en modo abreviado |
Mes (M) | MM, de 01 a 12 |
Semana (W) | ww, de 01 a 53 |
Día (D) | d, día de la semana, de 1 a 7 |
Hora (H) | HH, de 00 a 23, 24:00:00 como última hora |
Minuto (m) | mm, de 00 a 59 |
Segundo (s) | ss, de 00 a 59 |
Fracción (f) | Fracciones de segundo, con la precisión que se desee |
En todos los formatos de la norma, los valores se clasifican en unidades y subunidades: año, mes, día, hora, etc. Cada una de las unidades contiene un número fijo de cifras. Las ciencias naturales, el desarrollo de software y la correspondencia internacional son ámbitos en los que esta norma resulta especialmente útil para reducir el riesgo de error en las indicaciones temporales. El llamado timestamp o sello de tiempo de ISO 8601, estandarizado internacionalmente, reduce claramente dicho riesgo.
Tras los valores de fecha y tiempo suele añadirse la diferencia respecto al tiempo universal coordinado o, abreviado, UTC. Es una manera de tener en cuenta las posibles diferencias entre franjas horarias u horarios de verano según el país, usando para ello generalmente el carácter Z.
Tras los valores de fecha y tiempo suele añadirse la diferencia respecto al tiempo universal coordinado o, abreviado, UTC. Es una manera de tener en cuenta las posibles diferencias entre franjas horarias u horarios de verano según el país, usando para ello generalmente el carácter Z.
Ejemplos de indicaciones temporales con franjas horarias según ISO 8601:
Ejemplo | Explicación |
---|---|
2019-09-07T-15:50+00 | Las 15:50 del 07.09.2019 en la franja horaria del tiempo universal coordinado. |
2019-09-07T15:50+00Z | También las 15:50 del 07.09.2019 en la franja horaria del tiempo universal coordinado, con la añadidura Z en la escritura. |
2019-09-07T15:50+01:00 | Las 15:50 del 07.09.2019 en la franja horaria española (CET). |
Es importante tener en cuenta que el periodo de validez para los años en este formato solo abarca de 1583 a 9999, debido a que el calendario gregoriano se introdujo en 1583. Sin embargo, existe la posibilidad de aplicar la norma ISO 8601 a fechas o a indicaciones anteriores a 1583, basta con aclarar primero con las partes involucradas en la comunicación cómo se realizará la equivalencia.
Ventajas del estándar ISO 8601 frente a otras convenciones habituales
ISO 8601 regula únicamente datos numéricos y no incluye datos temporales en cuya expresión se empleen palabras. No está pensada, por lo tanto, para sustituir las fórmulas propias de cada lengua, como 4 de febrero de 1995, sino para evitar expresiones como 2/4/95 (forma estadounidense) o 9:30 h.
Las ventajas que ofrece la norma ISO 8601 pueden resumirse en los siguientes puntos:
Las ventajas que ofrece la norma ISO 8601 pueden resumirse en los siguientes puntos:
- Fácil de leer y redactar mediante software.
- Fácil de clasificar mediante una simple comparación de las cadenas de caracteres.
- Comprensible más allá de las barreras idiomáticas.
- Inconfundible entre otros formatos de fecha habituales.
- Coherente con el habitual formato de tiempo de 24 h, en el que las unidades más grandes (horas) también preceden a las más pequeñas (minutos y segundos).
- Las cadenas de caracteres que contienen una fecha seguida de la indicación de la hora también son fáciles de comparar y clasificar (por ejemplo, 2019-09-07 20:15:00).
- Notación breve y de longitud constante, lo que facilita tanto teclearla como estructurarla en tablas.
- Idéntica al formato de fecha chino, con lo cual el grupo cultural más numeroso del planeta (>25 %) ya está familiarizado con ella.
- También los formatos de fecha que siguen el orden año-mes-día están muy extendidos: ya son comunes en Japón, Corea, Hungría, Suecia, Finlandia, Dinamarca, entre otros países.
- Un valor de cuatro cifras para los años evita problemas al cambiar de siglo.
Convertir datos desde y hacia el formato ISO
Naturalmente, se puede hablar de la conversión del formato en dos direcciones: una fecha o dato temporal en el formato habitual de una región puede convertirse al formato ISO, pero un dato en formato ISO también puede pasar a expresarse en la forma específica de cierta región.
En la conversión que parte de una fecha ISO (ISO date) y le da una forma más fácil o legible, el sello de tiempo o timestamp de ISO 8601 suele tener la siguiente forma:
En la conversión que parte de una fecha ISO (ISO date) y le da una forma más fácil o legible, el sello de tiempo o timestamp de ISO 8601 suele tener la siguiente forma:
String dateString = "2019-09-26T07:58:30.996+0200"
Este string tiene aún la forma yyyy-MM-dd. El símbolo que separa la fecha y la hora es T y el formato de la hora es HH:mm:ss más la referencia al UTC, .sssz. El formato entero tiene, por lo tanto, la siguiente forma: yyyy-MM-dd T HH:mm:ss.SSSZ.
La conversión que queremos realizar transformará esta expresión ISO, por ejemplo, al típico formato español, es decir: HH:mm, dd.MM.yyyy (horas, minutos; día, mes, año).
La conversión que queremos realizar transformará esta expresión ISO, por ejemplo, al típico formato español, es decir: HH:mm, dd.MM.yyyy (horas, minutos; día, mes, año).
public String getOurDate() {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
try {
Date unformatedDate = format.parse(date);
String formatedDate = new SimpleDateFormat("HH:mm dd.MM.yyyy").format(unformatedDate);
return formatedDate;
} catch (ParseException e){
System.out.println("Error")
}
return date;
}
Una alternativa a la conversión manual es la que ofrecen algunos sitios web para transformar los datos automáticamente al formato deseado. Un ejemplo de ello es DenCode Converter, que permite introducir directamente la fecha en el formato inicial y luego escoger en qué formato desea convertirse. También se puede escoger la franja horaria.