Tengo esta página web que toma una entrada en segundos y produce cuál será el tiempo después de que haya transcurrido el tiempo. Así que lo hice usando el siguiente código
let duration = prompt("Enter your trip duration in seconds: "); // get the time from the vaue of the input element let newtime = new Date(); // get the current time newtime.setSeconds(newtime.getSeconds() + duration)Decidí probar el código y me dio resultados raros y por alguna razón cuando dividí la duración por diez empezó a funcionar. A pesar de que funcionó no estaba satisfecho. Así que agregué un poco más de código para tratar de encontrar dónde está el error.
let oldtime = new Date(); oldtime.setSeconds(oldtime.getSeconds() + 60);Agregué un código para que se mostrara en la página web para comparar los dos tiempos y estos son mis resultados cuando ingreso 60 como la duración...
Solo un pequeño resumen. El código funciona cuando codifico los valores pero se comporta de manera extraña si trato de obtener la entrada de un mensaje
Está concatenando una cadena a un número en lugar de agregar. Tienes que analizar el resultado de la prompt a un número (con el operador más unario ):
let duration = prompt("Enter your trip duration in seconds: "); // get the time from the vaue of the input element let newtime = new Date(); // get the current time newtime.setSeconds(newtime.getSeconds() + +duration) console.log(newtime)Creo que el problema se debe a que necesita analizar la duración de una cadena a un número. Entonces, prueba esto
newtime.setSeconds(newtime.getSeconds() + parseInt(duration, 10))
Puede usar una biblioteca como Luxon para manejar fechas y horas sin tener que preocuparse por un comportamiento inesperado como el que describió.
import { DateTime } from "luxon"; const now = DateTime.now(); const timeAfterTrip.plus({ seconds: duration }); console.log(timeAfterTrip);