Estoy creando una aplicación de programación y tengo problemas para obtener la diferencia entre dos horas. Una de las horas es ahora, que obtengo usando momentjs y la otra hora, que sería la hora de salida del usuario de un lugar determinado, usando el selector de tiempo vuetifyjs. La finalidad de obtener estos dos tiempos sería calcular el tiempo restante entre ahora y la hora de salida. Entonces, por ejemplo, si la hora actual, ahora, es a las 4:00 p. m. del miércoles y la hora de salida es a las 2:00 p. m. del jueves, la salida esperada es de 22 horas. Ahora, formateo cada uno de los tiempos así:
let now = moment().format("HH"); let departureHour = moment(this.departureTime, "HH").format("HH");Cuando observo las salidas individuales de estas variables, veo dos cadenas o instancias de momentos, por ejemplo, 'ahora': '16', 'hora de salida': '14'. Sin embargo, cuando trato de obtener sus diferencias de esta manera,
return departureHour.diff(now, "hours");Me sale un error que dice:
[Vue warn]: Error in render: "TypeError: departureHour.diff is not a function"También he intentado formatear las variables así.
let now = moment.utc().format("HH"); let departureHour = moment.utc(this.departureTime, "HH").format("HH");Pero me sale el mismo error.
He probado un par de soluciones que he encontrado, como esta, esta y esta, pero ninguna de ellas parece funcionar para mí.
Cualquier ayuda será apreciada. Si hay algo más que necesites saber, házmelo saber.
Espero que mi pregunta no sea demasiado divagante.
Gracias.
El error que recibe sugiere que la hora de departureHour no es un objeto de momento. es una String
También puede obtener un error de cálculo, ya que now no está en utc y la hora de departureHour sí lo está.
Advertencia final, no soy de lo que esperas que se inicialice la hora de departureHour .
Si está buscando ver la diferencia entre dos objetos de momento, en horas:
const now = moment.utc(); const departureHour = moment.utc(this.departureTime, "HH"); const diff = departureHour.diff(now, "hours"));Si solo quiere la diferencia entre dos números, podría ser mejor usar la resta de números:
const now = Number(moment.utc().format("HH")); // assuming departure time is in "HH" format, a number between 00 to 24 const diff = Math.abs(Number(departureTime) - now);