Показать сообщение отдельно
  #29 (permalink)  
Старый 10.09.2018, 01:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

таймеры из data-атрибутов
javascrip,
<html>
<head>
<meta charset="utf-8" />
    <title></title>
</head>
<body>


<div data-init="9/9/2018" data-period="1" data-minutes="600" >до 10 часов утра осталось</div>
<div data-init="8/27/2018" data-period="7" >до конца недели осталось</div>
<script>
/* data-minutes="600"  10 часов утра */

function two(a) {
        return (9 < a ? "" : "0") + a
}
function formatTime(a) {
        a = Math.floor(a / 1E3);
        var b = Math.floor(a / 60),
                c = Math.floor(b / 60),
                d = c / 24 | 0,
                c = c % 24;
        a %= 60;
        b %= 60;
        return d + " " + two(c) + " : " + two(b) + " : " + two(a)
};
function timeInit()
{
var divs=document.querySelectorAll('[data-init]');
[].forEach.call(divs, function(div) {
var init = div.dataset.init;  // дата начала периода  строго "месяц/день/год"
var period = +div.dataset.period;
var minutes  = +div.dataset.minutes  || 0;
var time = function() {
        var data = Date.parse(init)
        data = new Date(data);
        data.setMinutes((-180 - data.getTimezoneOffset()) + minutes, 0, 0); //для коррекции   запустить в зоне акции alert((new Date).getTimezoneOffset()) и поменять -180(москва)
        for (; (new Date).getTime() > data; )  {
        data.setDate(data.getDate()+period)
        }
        var a = data.getTime() -  (new Date).getTime();
        div.innerHTML = formatTime(a);
        window.setTimeout(time, 1E3)
}
time()
});
}
document.addEventListener('DOMContentLoaded', timeInit)


</script>
</body>
</html>
Ответить с цитированием