obtengo esta vez de un JSON externo:
"time":"19:45"
Necesito agregar 2 horas de esta cadena.
¿Es posible en JS? Gracias
Prueba esto
let myTime = '19:45' function getTime(time, addHour) { let [h, m] = time.split(':'); let date = new Date(); date.setHours(h, m, 0) date.toString(); let res = `${date.getHours()+addHour}:${date.getMinutes()}` return res } console.log(getTime( myTime, 2 ))Un objeto Fecha no es necesario para hacer matemáticas de tiempo, solo significa tener en cuenta los minutos y los segundos (60) y quizás los días (24).
P.ej
// Add time to a timestamp, both in in HH:mm format // If respectDay is true, hours are % 24 function addTime(start, increment, respectDay = false) { let pad = n => ('0' + n).slice(-2); let timeToMins = time => time.split(':').reduce((h, m) => h*60 + m*1); let minsToTime = (mins, respectDay = false) => `${pad((mins / 60 | 0) % (respectDay? 24 : Number.POSITIVE_INFINITY))}:${pad(mins%60)}`; return minsToTime(timeToMins(start) + timeToMins(increment), respectDay); } let time = "19:45"; console.log(addTime(time, '8:23')); // Total time : 28:08 console.log(addTime(time, '8:23', true)); // As day time : 04:08usa String.split para obtener hourNum y minuteNum , luego construye un objeto Date y usa setTime para agregar dos horas.
function addHours(text, hours=2) { const [hourNum, minNum] = text.split(':') const time = new Date(0, 0, 0, hourNum, minNum) time.setTime(time.getTime() + (hours * 60 * 60 * 1000)) return `${time.getHours()}:${time.getMinutes()}` } console.log(addHours('19:45', 2)) console.log(addHours('23:45', 2))