Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

213
Visualizações
Obtener compensación de fecha UTC según el formato de fecha

Tengo fecha con formato '2021-05-01T23:59:59.999-05:00'

Necesita obtener un valor de compensación utc como 300, 330, etc.

¿Alguien puede ayudar aquí? Se agradece cualquier respuesta sin usar moment.js.

Entonces extrayendo el valor -05:00 de '2021-05-01T23:59:59.999-05:00'

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

La función Date.getTimezoneOffset() solo le dará el desplazamiento entre la zona horaria de la máquina cliente y UTC, no le dará el desplazamiento UTC como se especifica en la cadena de fecha ISO.

Dado que las fechas están en formato ISO-8601 , podemos analizar el desplazamiento UTC de los datos, tendrá el formato ±[hh]:[mm], ±[hh][mm], ±[hh] o ' Z' para la hora UTC/Zulú.

Las compensaciones UTC negativas describen una zona horaria al oeste de UTC±00:00, donde la hora civil está atrasada (o antes) que UTC, por lo que el designador de zona se verá como "−03:00","−0300" o "−03 ".

Las compensaciones UTC positivas describen una zona horaria en o al este de UTC±00:00, donde la hora civil es igual o anterior (o posterior) a UTC, por lo que el indicador de zona se verá como "+02:00","+0200 ", o "+02".

Usaremos expresiones regulares para analizar las compensaciones de la zona horaria, esto también funcionará en IE 11.

 function getUTCOffsetMinutes(isoDate) { // The pattern will be ±[hh]:[mm], ±[hh][mm], or ±[hh], or 'Z' const offsetPattern = /([+-]\d{2}|Z):?(\d{2})?\s*$/; if (!offsetPattern.test(isoDate)) { throw new Error("Cannot parse UTC offset.") } const result = offsetPattern.exec(isoDate); return (+result[1] || 0) * 60 + (+result[2] || 0); } const inputs = [ '2021-05-01T23:59:59.999+12:00', '2021-05-01T23:59:59.999+10', '2021-05-01T23:59:59.999+0530', '2021-05-01T23:59:59.999+0300', '2021-05-01T23:59:59.999Z', '2021-05-01T23:59:59.999-05:00', '2021-05-01T23:59:59.999-07:00', ]; for(var i = 0; i < inputs.length; i++) { console.log('input:', inputs[i], 'offsetMinutes:', getUTCOffsetMinutes(inputs[i])); }

about 4 years ago · Juan Pablo Isaza Relatório

0

Más o menos lo mismo que @TerryLennox pero trata con:

  1. Segundos en el desplazamiento: bastante común antes de 1900, agregado como parte decimal de minutos
  2. Desplazamiento faltante: local, devuelve indefinido

 function parseOffset(ts) { let [all,hr,min,sec] = (''+ts).match(/([+-]\d{2}|Z):?(\d{2})?:?(\d{2})?$/) || []; let sign = hr < 0 ? -1 : 1; return !all ? all : // No match, return undefined hr == 'Z' ? 0 : hr * 60 + (min? sign * min : 0) + (sec? sign * sec / 60 : 0); } ['2021-05-01T23:59:59.999-05:30', '2021-05-01T23:59:59.999+05:30', '2021-05-01T23:59:59.999-0530', '2021-05-01T23:59:59.999+0530', '2021-05-01T23:59:59.999-05', '2021-05-01T23:59:59.999+05', '2021-05-01T23:59:59.999+053012', '2021-05-01T23:59:59.999+05:30:12', '2021-05-01T23:59:59.999Z', '2021-05-01T23:59:59.999', 'blah' ].forEach(ts => console.log(ts + ' -> ' + parseOffset(ts)));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda