Introdução
Neste laboratório, aprenderemos como converter uma data para o formato ISO estendido (ISO 8601), incluindo o deslocamento de fuso horário (timezone offset). Usaremos o método Date.prototype.getTimezoneOffset() para obter o deslocamento de fuso horário e invertê-lo. Em seguida, definiremos uma função auxiliar para normalizar qualquer número passado para um inteiro e preenchê-lo com 2 dígitos usando String.prototype.padStart(). Finalmente, usaremos os métodos embutidos no protótipo Date para construir a string ISO 8601 com o deslocamento de fuso horário. Ao final deste laboratório, você terá uma melhor compreensão de como manipular datas em JavaScript.
Convertendo Datas para o Formato ISO com Fuso Horário
Para converter uma data para o formato ISO estendido (ISO 8601), incluindo o deslocamento de fuso horário (timezone offset), siga estes passos:
- Abra o Terminal/SSH e digite
nodepara começar a codificar. - Use
Date.prototype.getTimezoneOffset()para obter o deslocamento de fuso horário e invertê-lo. Armazene seu sinal emdiff. - Defina uma função auxiliar,
pad(), que normaliza qualquer número passado para um inteiro usandoMath.floor()eMath.abs()e o preenche com2dígitos, usandoString.prototype.padStart(). - Use
pad()e os métodos embutidos no protótipoDatepara construir a string ISO 8601 com o deslocamento de fuso horário.
Aqui está o código que você pode usar:
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)
);
};
Use a função toISOStringWithTimezone() com um objeto new Date() como argumento para obter a data no formato ISO com o deslocamento de fuso horário. Por exemplo:
toISOStringWithTimezone(new Date()); // '2020-10-06T20:43:33-04:00'
Resumo
Parabéns! Você concluiu o laboratório de Data para Formato ISO com Fuso Horário. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.