Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda