Создайте таймер, который сбрасывается через 24 часа, но не перезапускается после перезагрузки страницы

Я создаю веб-приложение и пытаюсь создать таймер обратного отсчета для определенного продукта, на который действует скидка, и мне интересно, есть ли способ не сбрасывать таймер после обновления страницы, а когда он достигнет 0, подождать 24 часа и затем автоматически сбросить его. Вот изображение таймера ниже:

enter image description here

Вот код таймера:

var count = 420;
    var counter = setInterval(timer, 1000);

    function timer() {
        count = count - 1;
        if (count == -1) {
            clearInterval(counter);
            return;
        }

        var seconds = count % 60;
        var minutes = Math.floor(count / 60);
        minutes %= 60;

        document.getElementById("timer").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}); // watch for spelling
        document.getElementById("timer2").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}); // watch for spelling

    }

Это не лучший вариант, но когда пользователь впервые попадает на страницу, создайте таймер с новым обратным отсчетом и сохраните значение счетчика в локальном хранилище, а также обновляйте его каждую секунду в хранилище. И когда пользователь придет в следующий раз, вы можете проверить, есть ли у вас уже счетчик в хранилище, и использовать это значение счетчика для создания таймера. Вот документация по использованию localStorage - https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

Вы можете использовать localStorage для сохранения значения при всех загрузках страницы. Когда речь идет о таймере, имеет смысл сохранять время, в которое он был запущен. Таким образом, когда посетитель вернется, ваш код сможет точно сказать, сколько времени на нем осталось.

// Get the time stamp (in milliseconds) that the timer started 
var timerStart = window.localStorage.getItem('timerStart')
if (!timerStart){
    // If a timer was never started, start one
    timerStart = new Date().getTime()
    window.localStorage.setItem('timerStart', timerStart)
}

// Update the timer every 1/10th of a second
setInterval(timer, 100);

function timer() {
    // Use the start time to computer the number of
    // seconds left on the timer
    var count = 7 * 60 - Math.round((new Date().getTime() - timerStart) / 1000)
    if (count < 0) {
        clearInterval(timer);
        return;
    }

    var seconds = count % 60;
    var minutes = Math.floor(count / 60);
    minutes %= 60;

    document.getElementById("timer").innerHTML = (minutes).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) + ":" + (seconds).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}); 
}
Вернуться на верх