Проблема с цифровыми часами
Создаю электронные часы с возможностью переключения формата времени. Есть кнопка, которая должна менять отображение между 12-часовым форматом (AM/PM) и 24-часовым форматом.
Но возникла проблема: когда переключаю между таймерами, они начинают работать одновременно, и часы начинают быстро мигать и меняться каждую секунду.
Пробовал разные способы, но ничего не помогает.
const timeDisplay = document.querySelector('.time-display');
const formatButton = document.querySelector('.format-btn');
formatButton.addEventListener('click', switchFormat);
let clickCounter = 0;
switchFormat();
function display24Hour(){
let currentTime = new Date();
let hrs = currentTime.getHours();
let mins = currentTime.getMinutes();
let secs = currentTime.getSeconds();
hrs = padWithZero(hrs);
mins = padWithZero(mins);
secs = padWithZero(secs);
timeDisplay.innerHTML = `${hrs} : ${mins} : ${secs}`;
}
function display12Hour(){
let currentTime = new Date();
let hrs = currentTime.getHours();
let mins = currentTime.getMinutes();
let secs = currentTime.getSeconds();
let period = getPeriod(hrs);
hrs = convertTo12Hour(hrs);
hrs = padWithZero(hrs);
mins = padWithZero(mins);
secs = padWithZero(secs);
timeDisplay.innerHTML = `${hrs} : ${mins} : ${secs} ${period}`;
}
function convertTo12Hour(hour){
if(hour > 12){
hour -= 12;
}
if(hour === 0){
hour = 12;
}
return hour;
}
function padWithZero(time){
if(time < 10){
time = '0' + time;
}
return time;
}
function getPeriod(hour){
if(hour < 12){
period = 'AM';
}
if(12 < hour < 24){
period = 'PM';
}
return period;
}
function switchFormat(){
clickCounter++
let timer1 = setInterval(display12Hour, 0);
let timer2 = setInterval(display24Hour, 0);
if(clickCounter % 2 == 0){
clearInterval(timer1);
}
else if(clickCounter % 2 == 0){
clearInterval(timer2);
}
console.log(clickCounter);
}
В итоге оба формата часов работают параллельно, и при каждом клике на кнопку ситуация становится еще хуже.