@DeniSidorenko

Как высчитывать количество дней до определенной даты?

Есть такая структура:
<div class="pg-info">
      <div class="pg-info__top">Бронирование открыто до <span id="date">01.03.2019</span></div>
      <div class="pg-info__bottom">осталось ВСЕГО <span class="number">45 </span><span>ДНЕЙ</span>
      </div>
    </div>


Как сделать, чтобы JS сам высчитывал сколько дней осталось до данной даны? Дата в таком формате 01.03.2019 (берется из БД), но если требуется, можно поменять вид даты (ex. 01/03.2019).
  • Вопрос задан
  • 1288 просмотров
Решения вопроса 2
nyakove
@nyakove
Можно и не тащить сторонние библиотеки, все решается парой строчек кода

let datestring = document.querySelector('#date').innerText; // получаем дату "Ч"
let regexp = /(\d{2})\.(\d{2})\.(\d{4})/;
let dateX = new Date(datestring.replace(regexp, '$2/$1/$3')); // парсим из нее дату с заменой строки в понятный JS формат (имеется в виду же 1 марта?)
let dateToday = new Date(); // дата на момент захода на страницу
let days = Math.floor((dateX - dateToday) / 86400000) // количество целых дней до ожидаемого дня
Ответ написан
Комментировать
@DeniSidorenko Автор вопроса
var dateDOM = $("#date").text().split(".");
var date = Date.parse(dateDOM[2] + "-" + (dateDOM[1]) + "-" + dateDOM[0]);
var days = (date - Date.now()) / 86400000;
days = parseInt(days)
days = days + 1;
$('#day-last').text(days)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
KornevaViktoria
@KornevaViktoria
Frontend Developer
moment.js
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Разбить строку по точке в массив [дата, месяц, год], у сегодняшней даты сбросить часы, минуты, секунды, миллисекунды на ноль - чтобы тоже начало дня было. Посчитать разницу двух дат в миллисекундах, перевести в сутки:
function daysTill(ddmmyyyy) {
	let dd, mm, yyyy;
	[dd, mm, yyyy] = ddmmyyyy.split('.');
	const Till = new Date(yyyy, mm-1, dd);
	const Now = new Date();
	return Math.floor((Till - Now) / 864e5);
}
	
daysTill("01.03.2019") // 13
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект