Сделал простой таймер и логика такая, что при ms > 3_600_000, а это значит ms > 1 часа, в объект добавляется поле hour и hourCycle ( необязательно ). В моём примере отсчет должен начинаться с 1 часа и 10 секунд, но почему-то начинается с 4 часов и 10 секунд. В чем может быть ошибка?
const pizzaTimer = (ms) => {
const target = new Date().getTime() + ms + 100; // 100 это смещение для setInterval, так-как setInterval не всегда точно спустя 1 секунду обновляется
const interval = setInterval(() => {
if (ms > 3_600_000) {
console.log(
new Intl.DateTimeFormat(navigator.language, {
hourCycle: 'h23',
hour: 'numeric',
minute: 'numeric',
second: 'numeric',
}).format(target - new Date().getTime())
);
} else {
console.log(
new Intl.DateTimeFormat(navigator.language, {
minute: 'numeric',
second: 'numeric',
}).format(target - new Date().getTime())
);
}
}, 1000);
setTimeout(() => {
console.log('pizza time');
clearInterval(interval);
}, ms);
};
console.log(pizzaTimer(3_610_000));