UNPKG

ui-framework-jps

Version:

A simple UI framework for state management and UI components

42 lines 1.91 kB
export function addDurations(duration1, duration2) { const durationRegexp = /^(\d+:)?[0-5]?\d:[0-5]\d$/; // check both are valid durations const duration1Valid = durationRegexp.test(duration1); const duration2Valid = durationRegexp.test(duration2); if (duration1Valid && duration2Valid) { // split them into seconds, minutes, and hours const duration1Components = duration1.split(':'); const duration2Components = duration2.split(':'); let carry = 0; // add the seconds (last elements in each) const duration1Seconds = parseInt(duration1Components[duration1Components.length - 1]); const duration2Seconds = parseInt(duration2Components[duration2Components.length - 1]); let sumSeconds = duration1Seconds + duration2Seconds; if (sumSeconds >= 60) { carry = 1; sumSeconds -= 60; } const duration1Minutes = parseInt(duration1Components[duration1Components.length - 2]); const duration2Minutes = parseInt(duration2Components[duration2Components.length - 2]); let sumMinutes = duration1Minutes + duration2Minutes + carry; if (sumMinutes >= 60) { carry = 1; sumMinutes -= 60; } // do we have hours? let duration1Hours = 0; if (duration1Components.length == 3) { duration1Hours = parseInt(duration1Components[0]); } let duration2Hours = 0; if (duration2Components.length == 3) { duration2Hours = parseInt(duration2Components[0]); } let sumHours = duration1Hours + duration2Hours + carry; return `${(sumHours > 0) ? sumHours + ':' : ''}${(sumMinutes < 10) ? '0' + sumMinutes : sumMinutes}:${(sumSeconds < 10) ? '0' + sumSeconds : sumSeconds}`; } else { return '00:00'; } } //# sourceMappingURL=DurationFunctions.js.map