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>