Javascript таймер на несколько дней для нескольких часовых поясов - PullRequest
0 голосов
/ 26 ноября 2018

То, что я пытаюсь сделать, - это несколько отсчетов с разными сроками годности.У меня есть фрагмент кода из Codepen, который я использовал в качестве отправной точки, которая работает только для одного обратного отсчета.Я также надеюсь, что независимо от того, находится ли зритель в Калифорнии или в Грузии, истечение срока действия будет знать, что такое часовой пояс.Я добавил предложенный getTimezoneOffset () для работы с разными часовыми поясами.Что заставляет обратный отсчет умножать оставшиеся дни до абсурдного числа, которое в будущем будет 50 лет.Когда я удаляю это, это нормально.Поэтому я не понял, как правильно реализовать это предложение.Через много проб и ошибок я успешно создал дубликат обратного отсчета с другой датой истечения срока действия.Единственное, чего я до сих пор не понимаю, - это как реализовать getTimezoneOffset (), чтобы он не отображал 17 893 и 17 883 дня (дней на 50 лет).Я модификатор javascript методом проб и ошибок.Я стараюсь, пока что-то не сломается.

var countDownDate = new Date("DEC 27, 2018").getTime();
var countDownDate2 = new Date("DEC 17, 2018").getTime();


// COPY FEED
var data = {
      // OFFER 1
      one:     "Offer One",
      two:     "Free Product",
    three:     "Today Only",
     // OFFER 2
     four:     "Offer Two",
     five:     "Free Pickup",
      six:     "<span id='daysLeft'></span> <span id='plural'></span>",
  seven:     "Expires: Dec. 27, 2018",
    // OFFER 3

    eight:     "Offer  Three",
    nine:     "<span id='daysLeft2'></span> <span id='plural2'></span>",

     ten:    "Expires: Dec. 17, 2018",
};

// LOOP THROUGH KEYS TO GET ALL ELEMENT IDs & CREATE VARIABLES
function bannerFunc() {
    for (key in data) {
        if (data.hasOwnProperty(key)) {
            var value = data[key];
            var key = document.getElementById('" + key + "');
        }
    }

    // ASSIGN OBJECT VALUES TO VARIABLES
      one.innerHTML = data.one;
      two.innerHTML = data.two;
    three.innerHTML = data.three;
     four.innerHTML = data.four;
     five.innerHTML = data.five;
      six.innerHTML = data.six;
    seven.innerHTML = data.seven;
    eight.innerHTML = data.eight;
     nine.innerHTML = data.nine;
     ten.innerHTML = data.ten;

    // DATE CODE


    var x = setInterval(function() {
        var now = new Date().getTimezoneOffset(),
            amountLeft = countDownDate - now,
            days = Math.floor(amountLeft / (1000 * 60 * 60 * 24) + 1),
            plural = document.getElementById('plural');
            plural.innerHTML = days + ' Days Left';
            if( days < 2 && days > 0 ){
                plural.innerHTML = days + ' Day Left';
            }
            if( days <= 0 ){
                plural.innerHTML = 'Expired';
            }


        var now = new Date().getTimezoneOffset(),
            amountLeft = countDownDate2 - now,
            days = Math.floor(amountLeft / (1000 * 60 * 60 * 24) + 1),
            plural = document.getElementById('plural2');
            plural2.innerHTML = days + ' Days Left';
            if( days < 2 && days > 0 ){
                plural2.innerHTML = days + ' Day Left';
            }
            if( days <= 0 ){
                plural2.innerHTML = 'Expired';

 }
    }, 1000);
}
bannerFunc();

1 Ответ

0 голосов
/ 26 ноября 2018

Используйте getTimeZoneOffset для расчета даты.Затем определите все ваши даты как даты UTC.(https://www.w3schools.com/jsref/jsref_gettimezoneoffset.asp). Подробнее о JS Dates

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...