This function adds a number of hours to a 24 hour clock: /** * @param {Integer} now The current hours * @param {Integer} add The number of hours to add */ function addHours(now, add){ var h = (now + add) % 24; return h < 0 ? 24 + h : h; }; - `addHours(2, 5) //7` - `addHours(23, 5) //4` - `addHours(23, -5) //18` - `addHours(72, 3) //3` - `addHours(0, 0) //0` The output should always be an integer in the range of 0 - 23. I can't see any problem with it, but maybe you can. Please let me know if it can be improved or if there are any bugs.