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

227
Vistas
Encuentre el valor medio de tiempo entre dos valores de tiempo usando momentjs

Supongamos que tengo dos valores de tiempo como startTime y endTime . Quiero encontrar el valor medio exacto de estos objetos de tiempo. Ejemplo: si startTime es 10:30 y endTime es 11:30 , necesito 11:00 como valor de punto medio.

¿Cómo resolver esto usando momentjs en JavaScript?

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

0

El medio entre dos fechas es solo la mitad de la diferencia entre las fechas sumadas a la más pequeña.

La diferencia debería ser bastante sencilla:

 Math.abs(moment(a).diff(b))

Math.abs() elimina el signo menos de los números negativos (también conocido como si a <b).

Calcular el medio también tiene dos pasos, primero divide la diferencia por dos, luego súmalo a la fecha más pequeña (Math.min()):

 diff/2+Math.min(moment(a).valueOf(),moment(b).valueOf())

moment(n).valueOf() convierte sus cadenas de fecha en enteros comparables.

 function middleDate(a,b) { let diff = Math.abs(moment(a).diff(b)) let middle = diff/2+Math.min(moment(a).valueOf(),moment(b).valueOf()) return moment(middle) } console.log(middleDate("2022-01-27T10:30:00Z", "2022-01-27T11:30:00Z"))
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

Si solo desea las horas y los minutos, puede formatear el objeto de momento devuelto (y usar moment.utc() para eliminar la zona horaria):

 function middleDate(a,b) { let diff = Math.abs(moment(a).diff(b)) let middle = diff/2+Math.min(moment(a).valueOf(),moment(b).valueOf()) return moment(middle) } console.log( moment.utc(middleDate("2022-01-27T10:30:00Z", "2022-01-27T11:30:00Z")).format("hh:mm") )
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Así es como lo resolví

(Para mi caso particular que trata solo con el tiempo. Para casos más genéricos, puede usar la respuesta anterior)

 import moment from 'moment'; export const middleDate = (startTime, endTime) => { let duration = moment.duration(moment(endTime, 'HH:mm:ss').diff(moment(startTime, 'HH:mm:ss'))); //get Total Interval let midInterval = duration.asHours() / 2; // find half of the interval return moment(moment(startTime, 'HH:mm:ss')).add(midInterval, 'hour').format('HH:mm'); //add the mid interval to the startTime we have };
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