Я опять с кодами для Тильды, на этот раз таймер с автоматическим обновлением в определенное время раз в день.
Идеально для всяких маркетинговых фичей. Работает как часы. В чем плюс - нет лишних телодвижений для обновления таймера раз в сутки. Да и вообще ничего лишнего не надо.
Инструкция:
1. В зеро блоке создаем текстовый слой с циферками (в данном случае это часы : минуты : секунды, к примеру
02 : 23 : 23)
2. Добавляем к нему css класс zero-timer
3. В HTML блок T123 добавляем код:
document.addEventListener("DOMContentLoaded", function() {
// Функция для получения текущего времени с учётом московского часового пояса (UTC+3)
function getMoscowTime() {
const now = new Date();
// Получаем разницу между местным временем и UTC в миллисекундах
const offsetInMS = now.getTimezoneOffset() * 60000;
// Добавляем смещение для UTC+3 (Москва)
const moscowTime = new Date(now.getTime() + offsetInMS + 3 * 3600000);
return moscowTime;
}
function getNextResetTime() {
// Получаем текущее московское время
const now = getMoscowTime();
let resetTime = new Date(now);
// Устанавливаем целевое время на 21:00 МСК
resetTime.setHours(21, 0, 0, 0);
// Если текущее время уже после 21:00, устанавливаем цель на следующий день
if (now >= resetTime) {
resetTime.setDate(resetTime.getDate() + 1);
}
return resetTime;
}
function updateZeroTimer() {
const now = getMoscowTime();
const resetTime = getNextResetTime();
// Рассчитываем разницу в миллисекундах
const timeDiff = resetTime - now;
// Преобразуем разницу в секунды, минуты, часы и дни
const totalSeconds = Math.floor(timeDiff / 1000);
const days = Math.floor(totalSeconds / (60 * 60 * 24));
const hours = Math.floor((totalSeconds % (60 * 60 * 24)) / (60 * 60));
const minutes = Math.floor((totalSeconds % (60 * 60)) / 60);
const seconds = totalSeconds % 60;
// Форматируем время с двумя цифрами
const timeTitle =
(days > 0 ? days + ' : ' : '') +
String(hours).padStart(2, '0') + ' : ' +
String(minutes).padStart(2, '0') + ' : ' +
String(seconds).padStart(2, '0');
// Обновляем элемент на странице
document.querySelector(".zero-timer .tn-atom").innerHTML = timeTitle;
}
// Инициализируем таймер
updateZeroTimer();
setInterval(updateZeroTimer, 1000);
});
4. Если нужно другое время (в данном примере 21:00 МСК это время начала и окончания отсчета таймера), меняем 21 на нужное время.
resetTime.setHours(21, 0, 0, 0);