Fecha a formato ISO con zona horaria

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, aprenderemos a convertir una fecha al formato ISO extendido (ISO 8601), incluyendo el desplazamiento de zona horaria. Usaremos el método Date.prototype.getTimezoneOffset() para obtener el desplazamiento de zona horaria y revertirlo. Luego, definiremos una función auxiliar para normalizar cualquier número pasado a un entero y rellenarlo a 2 dígitos usando String.prototype.padStart(). Finalmente, usaremos los métodos integrados en el prototipo Date para construir la cadena ISO 8601 con desplazamiento de zona horaria. Al final de este laboratorio, tendrás una mejor comprensión de cómo manipular fechas en JavaScript.

Convertir fechas al formato ISO con zona horaria

Para convertir una fecha al formato ISO extendido (ISO 8601), incluyendo el desplazamiento de zona horaria, siga estos pasos:

  1. Abra la Terminal/SSH y escriba node para comenzar a codificar.
  2. Utilice Date.prototype.getTimezoneOffset() para obtener el desplazamiento de zona horaria y revertirlo. Guarde su signo en diff.
  3. Defina una función auxiliar, pad(), que normalice cualquier número pasado a un entero usando Math.floor() y Math.abs() y lo rellene a 2 dígitos, usando String.prototype.padStart().
  4. Utilice pad() y los métodos integrados en el prototipo Date para construir la cadena ISO 8601 con desplazamiento de zona horaria.

Aquí está el código que puede utilizar:

const toISOStringWithTimezone = (date) => {
  const tzOffset = -date.getTimezoneOffset();
  const diff = tzOffset >= 0 ? "+" : "-";
  const pad = (n) => `${Math.floor(Math.abs(n))}`.padStart(2, "0");
  return (
    date.getFullYear() +
    "-" +
    pad(date.getMonth() + 1) +
    "-" +
    pad(date.getDate()) +
    "T" +
    pad(date.getHours()) +
    ":" +
    pad(date.getMinutes()) +
    ":" +
    pad(date.getSeconds()) +
    diff +
    pad(tzOffset / 60) +
    ":" +
    pad(tzOffset % 60)
  );
};

Utilice la función toISOStringWithTimezone() con un objeto new Date() como argumento para obtener la fecha en formato ISO con desplazamiento de zona horaria. Por ejemplo:

toISOStringWithTimezone(new Date()); // '2020-10-06T20:43:33-04:00'

Resumen

¡Felicidades! Has completado el laboratorio de Conversión de Fechas al Formato ISO con Zona Horaria. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.