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

187
Vistas
¿Cómo verificar si la hora de los datos tiene el desplazamiento de la zona horaria o no?

Estoy desarrollando una aplicación usando Javascript. Dentro del código, recibo el Datetime . Esta fecha y hora puede tener el desplazamiento de la zona horaria o no. Me gustaría verificar si el desplazamiento de la zona horaria está presente o no, en función de lo cual necesito tomar algunas decisiones.

El siguiente es el tipo de datos que entrarán en mi función Javascript:

 const dateWithoutOffset = "2022-03-01T16:23:19" const dateWithOffset = "2022-03-01T16:23:19+01:00" //Perform something to check for offset if(dateWithOffset.contains(offset)){ console.log("OFFSET is PRESENT") } //Perform something to check offset is not present if(dateWithoutOffset.contains(offset)){ console.log("OFFSET IS NOT PRESENT") }

Sé que puedo verificar la longitud, pero siento que no es la forma correcta, así que pensé en preguntar aquí y encontrar la forma correcta de encontrar la compensación.

Probé muchos métodos y respuestas presentes en Stackoverflow, pero nada parece darme la respuesta correcta, así que publiqué aquí para obtener una respuesta correcta.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede usar expresiones regulares para analizar el desplazamiento de estas cadenas de fecha ISO.

La creación de algunas funciones convenientes como hasOffset() y getUTCOffsetMinutes() debería hacer que el problema sea más fácil de resolver.

Si la fecha tiene un desplazamiento, puede proceder a analizarla (como se muestra a continuación) o hacer otra cosa, como mostrarla de manera diferente.

 const isoDatePattern = /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/ function getOffsetStr(input) { const groups = input.match(isoDatePattern); return groups ? groups[4]: null; } function hasOffset(input) { return (!!getOffsetStr(input)); } function getUTCOffsetMinutes(input) { const offset = getOffsetStr(input); return offset ? parseUTCOffset(offset): null; } function parseUTCOffset(offsetStr) { if (offsetStr.toUpperCase() === 'Z') { return 0; } const sign = offsetStr.startsWith('-') ? -1: 1; const hour = +offsetStr.slice(1,3); const min = +offsetStr.slice(-2); return sign * hour * 60 + min; } const testInputs = [ "2010-11-06T02:19:00.250", "2022-03-01T16:23:19", "2025-04-20T17:02:03.401+0200", "2022-03-01T16:23:19+01:00", "2022-03-01T16:23:19Z", "2022-03-01T16:23:19-0500", "2022-03-01T16:23:19+12:00" ] console.log('Input'.padEnd(28, ' '), 'Has Offset ' ,'UTC Offset (minutes)') testInputs.forEach(input => { console.log(input.padEnd(28, ' '), hasOffset(input), '\t', getUTCOffsetMinutes(input)); })
 .as-console-wrapper { max-height: 100% !important; }

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