setInterval(func, 1000) гарантирует что пройдет не меньше тысячи мсек, но при этом зачастую может пройти и больше. Кроме того,
В браузерах Chrome, Opera и Safari внутренний таймер «заморожен» во время показа alert/confirm/prompt. А вот в IE и Firefox внутренний таймер продолжит идти.
В общем, если вам нужно
точное время, вероятно придется время от времени сверяться с date().
Для начала можно почитать
https://learn.javascript.ru/settimeout-setinterval