Обратный отсчет до начала следующего месяца
Не понимаю как в javascript реализовать обратный отсчет до начала следующего месяца, постоянно не переопределяя параметр
var endTime = new Date("1 August 2021 0:00:00 GMT+03:00"); // здесь чтобы не писать число и месяц, а чтобы было автоматически :)
endTime = (Date.parse(endTime) / 1000);
var now = new Date();
now = (Date.parse(now) / 1000);
var timeLeft = endTime - now;
var days = Math.floor(timeLeft / 86400);
var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
alert(new Date(Date.now()).getDay())
Ответы (1 шт):
Автор решения: yar85
→ Ссылка
Например, вот так можно реализовать:
countdownToNextMonth(document.body);
function countdownToNextMonth(el) {
const tzOffsetMs = (new Date()).getTimezoneOffset() * 6e4,
getDiffUTC = () => new Date(toDate - Date.now() + tzOffsetMs);
let toDate = getNextMonthDate(); // собстна, получение даты следующего месяца
loop();
function loop() {
let diff = getDiffUTC();
if (diff < 0) { // если цикл застал смену месяца
toDate = getNextMonthDate(); // надо получить дату уже следующего месяца
diff = getDiffUTC(); // и снова пересчитать разницу дат
}
el.textContent = `${diff.getDate()}:${diff.toLocaleTimeString('ru-RU')}`;
requestAnimationFrame(loop);
}
function getNextMonthDate() {
const now = new Date();
return new Date(now.getFullYear(), now.getMonth() + 1, 0);
}
}
body { margin: 3rem 0; font: 3rem emoji; text-align: center; }