Obtenga la marca de tiempo actual en formato ISO 8601
- Importancia y uso del formato ISO 8601 en Java
-
Uso de
T
yZ
en el Formato ISO 8601 - Convierta la marca de tiempo actual a ISO 8601 usando la zona horaria UTC
- Ventajas de usar el formato ISO 8601
En Java o cualquier otro lenguaje de programación, convertir una cadena a la fecha es una de las habilidades fundamentales. Es bastante sencillo almacenar una fecha en formato de cadena y luego convertirla en el objeto Fecha
para avanzar en el proyecto.
Este artículo nos enseñará cómo obtener la marca de tiempo actual en el formato ISO 8601. Comencemos a aprender el formato ISO 8601 y por qué y cómo podemos usarlo en nuestro proyecto.
Importancia y uso del formato ISO 8601 en Java
Los formatos de fecha y hora son especialmente importantes cuando tenemos que organizar conferencias y reuniones o tratar con nuestros clientes. Sin embargo, en esta era digital, no parece fácil tener un formato estándar para especificar diferentes zonas horarias en todo el mundo que sea fácil de entender para todos.
El formato de la norma internacional ISO 8601 es el que precisamente soluciona este problema. Usando el formato de fecha/hora de la organización internacional para la estandarización (ISO), podemos especificar una fecha/hora numérica donde la hora es opcional.
Todas las partes interesadas a través de las fronteras pueden especificar la fecha/hora utilizando este estándar internacional. Recuerde que la representación de la fecha ISO 8601 se basa en el Calendario gregoriano.
En el formato ISO 8601, especificamos una fecha/hora que comienza con un año, seguido de un mes, día, hora, minutos, segundos y milisegundos.
Por ejemplo, 2022-09-30 15:00:00.000
muestra el 30 de septiembre de 2022 a las 3 p. m. (esta marca de tiempo está en hora local ya que no hemos especificado la compensación de zona, que aprenderemos más adelante en este tutorial). A continuación se muestra la representación tabular de la fecha/hora utilizando ISO 8601.
Formato ISO 8601 | Rango de valores |
---|---|
Año (Y ) |
YYYY , cuatro dígitos. También podemos abreviarlo a dos dígitos. |
Mes (M ) |
MM , 01-12 |
Semana (S ) |
WW , 01-53 |
Día (D ) |
D , día de la semana, 1-7 |
Hora (h ) |
hh , 00-23 donde 24:00:00 como hora de finalización |
Minutos (m ) |
mm , 00-59 |
Segundos (s ) |
ss , 00-59 |
Fracción decimal (f ) |
fracciones de segundos, cualquier grado de precisión |
Uso de T
y Z
en el Formato ISO 8601
Supongamos que tenemos una marca de tiempo 2022-09-30T20:18:46.384Z
. Aquí, T
no significa nada; es solo un separador requerido por el formato de fecha/hora ISO 8601.
Podemos leer T
como una abreviatura de Tiempo mientras que Z
se usa para marcas de tiempo cero porque está compensado por 0 desde un UTC (Tiempo universal coordinado).
Entendamos el uso de T
y Z
a través de los siguientes ejemplos.
2022-09-30T15:50+00
- 3:30 p. m. del 30 de septiembre de 2022, en una zona horaria universal.2022-09-30T15:50+00Z
- 3:30 p. m. del 30 de septiembre de 2022, en una zona horaria de tiempo universal con la adición deZ
en la notación.2022-09-30T15:50-04:00
- 3:30 PM del 30 de septiembre de 2022, en una zona horaria de Nueva York (UTC con horario de verano).
Hemos aprendido lo suficiente sobre el formato de fecha ISO 8601. Veamos cómo podemos hacerlo en Java y obtener la fecha/hora actual en UTC.
Convierta la marca de tiempo actual a ISO 8601 usando la zona horaria UTC
Código de ejemplo:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Test {
public static void main(String args[]) {
TimeZone timezone = TimeZone.getTimeZone("UTC");
//"Z" indicates UTC, which means no timezone offset
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
dateFormat.setTimeZone(timezone);
String ISODate = dateFormat.format(new Date());
System.out.println(ISODate);
}
}
Producción :
2022-09-30T07:20:52Z
En el método main()
de Test
, primero usamos el método getTimeZone()
, que toma un argumento de tipo cadena para obtener una zona horaria. Este método devuelve una zona horaria asociada a un calendario de DateFormat
.
Luego, usamos la clase SimpleDateFormat
, que ayuda a analizar y formatear los datos. Nos ayuda a transformar la fecha de un formato a otro.
Instanciamos esta clase especificando nuestro formato de fecha/hora requerido.
A continuación, establecemos la zona horaria usando el método setTimeZone()
y pasamos un parámetro que contiene el valor devuelto por el método getTimeZone()
. Después de eso, usamos el objeto dateFormat
para formatear la fecha dada.
Finalmente, imprimimos la fecha, que ahora está en el formato ISO 8601 (ver el resultado anterior).
Ahora, la pregunta es, ¿por qué estamos usando este formato específico? ¿Tenemos algunas ventajas por ello? Echemos un vistazo a ellos a continuación.
Ventajas de usar el formato ISO 8601
Las siguientes son algunas ventajas de usar el formato ISO 8601 sobre otras variantes comunes:
- Es fácil de leer/escribir con software.
- Es fácil de comparar/clasificar con la comparación de cadenas.
- Las cadenas, donde la fecha va seguida de la hora, son fáciles de comparar/clasificar. Por ejemplo,
2022-09-30 10:15:00
. - Es fácil de entender independientemente del idioma nacional y no se puede confundir con otras variantes de fecha de uso común.
- La notación tiene una longitud constante y es concisa. Además, un año de cuatro dígitos no causa ningún problema a principios de siglo.
- Este formato de fecha
año-mes-día
está muy extendido, por ejemplo, en Corea, Hungría, Suecia, Japón y otros países.
Este formato es idéntico a la representación de fecha china, lo que significa que casi el 25% ya está familiarizado con este sistema.
Como vemos, utilizar el formato ISO 8601 tiene múltiples ventajas y además es fácil de usar y entender. Por lo tanto, es importante aprender y usar este formato de fecha en las aplicaciones.