Obtenga la marca de tiempo actual en formato ISO 8601

Mehvish Ashiq 12 octubre 2023
  1. Importancia y uso del formato ISO 8601 en Java
  2. Uso de T y Z en el Formato ISO 8601
  3. Convierta la marca de tiempo actual a ISO 8601 usando la zona horaria UTC
  4. Ventajas de usar el formato ISO 8601
Obtenga la marca de tiempo actual en 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.

  1. 2022-09-30T15:50+00 - 3:30 p. m. del 30 de septiembre de 2022, en una zona horaria universal.
  2. 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 de Z en la notación.
  3. 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:

  1. Es fácil de leer/escribir con software.
  2. Es fácil de comparar/clasificar con la comparación de cadenas.
  3. Las cadenas, donde la fecha va seguida de la hora, son fáciles de comparar/clasificar. Por ejemplo, 2022-09-30 10:15:00.
  4. Es fácil de entender independientemente del idioma nacional y no se puede confundir con otras variantes de fecha de uso común.
  5. 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.
  6. 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.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - Java DateTime