Разность между датами в формате timestamp в JavaScript
Формат timestamp предназначен для нахождения разницы между датами. Давайте для примера получим разницу в миллисекундах между текущим и заданным моментом времени:
let now = new Date(); let date = new Date(2015, 11, 4, 23, 59, 59); let diff = now.getTime() — date.getTime(); console.log(diff);
Очевидно, что чаще всего нам нужна разница не в миллисекундах, а в днях или в годах. Для этого просто нужно перевести милисекунды в нужное нам значение.
Например, чтобы перевести милисекунды в секунды, нужно милисекунды поделить на 1000 , чтобы секунды перевести в минуты, нужно секунды поделить на 60 и так далее.
Давайте, например, переведем разницу между датами в минуты:
console.log(diff / (1000 * 60));
А теперь — в часы:
console.log(diff / (1000 * 60 * 60));
Выведите на экран количество дней, прошедшее между 1 марта 1988 года и 10 января 2000 года.
Выведите на экран количество месяцев, прошедшее между вашим рождением и текущим моментом времени.
Хочу узнать сколько дней между двумя датами. Преобразование даты в число
У меня есть два поля типа date.
Хочу взять разницу между ними, и узнать сколько дней получиться. Пробовала использовать Parse, getDate, но js ругается. Делала такое же на PHP, но, видимо в js всё не так просто.
input type="date" class="form-control" name="fday" id="fday" required> input type="date" class="form-control" name="eday" id="eday" required>
1 2 3 4 5 6 7 8 9 10
dlit.addEventListener('change',final_price, true); function final_price(){ let data1 = document.getElementById('fday').parse(); let data2= document.getElementById('eday').value; //let diff=Math.ceil(Math.abs(data2-data1/(1000*3600*24))); let diff=(data2-data1); document.getElementById('final_price').innerHTML=diff; }
В php вот так делала:
$diff = (strtotime($eday)- strtotime($fday))/86400;
Лучшие ответы ( 3 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Даты в виде записей. Определить количество дней между двумя датами
Создать программу, позволяющую определить количество дней между двумя датами.Для хранения даты.
Сколько дней прошло между двумя датами
Приветствую всех. У меня образовалась задача — нужно сделать программу на питоне, которая считает.
331 / 238 / 80
Регистрация: 15.11.2017
Сообщений: 453
Записей в блоге: 4
Сообщение было отмечено alina161 как решение
Решение
1 2 3 4 5 6 7 8
diffButton.addEventListener('click', getDayDiff); function getDayDiff() { let date1 = document.getElementById('fday').valueAsNumber; let date2 = document.getElementById('eday').valueAsNumber; console.log( Math.floor((date2 - date1) / (1000 * 60 * 60 * 24) )); }
1 2 3
input type="date" class="form-control" name="fday" id="fday" required value="2021-02-01"> input type="date" class="form-control" name="eday" id="eday" required value="2021-02-05"> button id='diffButton'>Разница в днях/button>
6175 / 3410 / 1026
Регистрация: 07.09.2019
Сообщений: 5,457
Сообщение было отмечено alina161 как решение
Решение
Чтобы получить числовые значения, которыми удобно оперировать, можно также сделать так:
let data1 = +new Date(document.getElementById("fday").value), data2 = +new Date(document.getElementById("eday").value);
6485 / 3896 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
Сообщение было отмечено amr-now как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
html> head> meta charset="utf-8"> head> body> input type="date" class="form-control" name="fday" id="fday" required value="2021-02-01"> input type="date" class="form-control" name="eday" id="eday" required value="2021-02-28"> input type="button" id="calc" value="Рассчитать"> div id="final_price">div> script> /** * Разница календарных дат с учетом зимнего и летнего времени * @param date1 Первая дата, возможно с компонентом времени * @param date2 Вторая дата, возможно с компонентом времени * @returns Разница в календарных днях */ function diffDays(date1, date2) { let year1 = date1.getFullYear(), year2 = date2.getFullYear(), month1 = date1.getMonth(), month2 = date2.getMonth(), day1 = date1.getDate(), day2 = date2.getDate(); let d1 = new Date(year1, month1, day1), d2 = new Date(year2, month2, day2), // Смещение для уже полностью очищенных двух локальных дат offset1 = d1.getTimezoneOffset(), offset2 = d2.getTimezoneOffset(), diff = (offset1 - offset2) * 60000, days = (d2 - d1 + diff) / 86400000; return days; } document.querySelector("#calc").onclick = function () { // Если к строковой дате не добавить нулевое время, то будут взяты дата/время по Гринвичу let date1 = new Date(document.getElementById("fday").value + "T00:00"), date2 = new Date(document.getElementById("eday").value + "T00:00"); console.log(date1); let diff = diffDays(date1, date2); document.getElementById('final_price').innerHTML = diff; }; script> body> html>
Как получить разницу между двумя датами в днях и в часах в плагине datetimepicker?
Всем доброго времени суток! Прошу помочь с таким вопросом:
На сайте используется плагин datetimepicker для выбора даты начала аренды и даты окончания,
можно выбирать даты и точное время.
Нужно получить разницу между двумя выбранными датами в количестве дней и в точном количестве часов.
Количество дней вроде получилось высчитать, а количество часов не получается
Есть такой код:
$("#startdate").datetimepicker(< minTime: 0, minDate: date >); $("#enddate").datetimepicker(< minTime: 0, minDate: date >); $('#enddate').change(function() < var startDate = $('#startdate').datepicker('getDate'); var endDate = $('#enddate').datepicker('getDate'); if (startDate < endDate) < var dayDiff = Math.ceil((endDate - startDate) / (1000 * 60 * 60 * 24)); console.log(dayDiff); var hoursDiff = (dayDiff * 24) / 60; console.log(hoursDiff); >else < alert ("Извините, нельзя выбрать дату окончания аренды ранее даты начала аренды"); $('#enddate').val(""); $('#days').val(""); >>);
- Вопрос задан более года назад
- 229 просмотров
Комментировать
Решения вопроса 1
Сергей Соколов @sergiks Куратор тега JavaScript
Сначала получить разницу между двумя объектами Date в часах.
Затем посмотреть, сколько в эти часы влезает целых суток, и вычесть их.
const diffHours = Math.ceil((endDate - startDate) / 36e5); // точно в бОльшую сторону округлять? const days = Math.floor(diffHours / 24); const hours = diffHours - days * 24; console.log(`Срок аренды: $ дней и $ часов`);
Ответ написан более года назад
Нравится 1 1 комментарий
Разница дней между двумя ВВЕДЕННЫМИ датами JS [дубликат]
Здравствуйте. В процессе работы возникли сложности с выводом количества разницы дней между датами введенными в два input type=»data», как делать разницу между тем что является строкой? Тип data, потому что при запуске страницы js подгружает сегодняшнюю дату и дату плюс 3 дня. А нужно сравнение между введенными, а не установленными, то есть вызов функции будет(логично) через onchange. Спасибо за наводки, надеюсь, объяснил нормально.
Отслеживать
Влад Юдкин
задан 29 сен 2017 в 19:48
Влад Юдкин Влад Юдкин
177 1 1 золотой знак 1 1 серебряный знак 14 14 бронзовых знаков
в прошлом вашем вопросе, точнее в ответе к нему, есть метод парсинга даты, считайте значение, распарсите етим методом.
29 сен 2017 в 20:05
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Сначала нужно привести к формату потребляемому JS, затем создается объекты с типом Date и производится вычитание, умноженное на коэффициэнт. Пример:
var date1 = new Date('12-09-2017'); var date2 = new Date('12-10-2017'); var daysLag = Math.ceil(Math.abs(date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)); console.log(daysLag) >1
Отслеживать
ответ дан 29 сен 2017 в 20:44
164 2 2 бронзовых знака
Вот пример расчёта разницы времени из строковых представлений дат в формате MySQL (yyyy-mm-dd hh:mm:ss):
// Код просто взял из своего приложения, ничего не меняя. // Если формат не соответствует тому, в котором у вас ввод - подгоните регулярки в первых двух строках кода под ваш формат // . var start = new Date(Timings[i]['start_time'].replace(/-/g,"/")); var stop = new Date(Timings[i]['stop_time'].replace(/-/g,"/")); var session = stop - start; var session_string = msToTime(session); // . function msToTime(duration, show_days) < var seconds = parseInt((duration/1000)%60); var minutes = parseInt((duration/(1000*60))%60); var hours = parseInt((duration/(1000*60*60))%24); var days = parseInt(duration/(1000*60*60*24)); hours = (hours < 10) ? "0" + hours : hours; minutes = (minutes < 10) ? "0" + minutes : minutes; seconds = (seconds < 10) ? "0" + seconds : seconds; // Формат возвращаемого значения перепишите как Вам надо. return show_days?(GetNumberWithPostfix(days, 'day') + ", " + hours + ":" + minutes + ":" + seconds):(hours + ":" + minutes + ":" + seconds); >