С помощью Javascript можно провести сравнение между двумя датами, то есть, простыми словами, проверить, равны ли две даты или одна больше или меньше другой.
Этот процесс оказывается определяющим в некоторых приложениях, которые предварительно просматривают, например, одну дату начала и одну дату окончания.
Рассмотрим практический пример – форму для бронирования отеля, в которой пользователь должен выбрать дату заселения и дату выезда.
Поскольку мы работаем с датами, необходимо иметь возможность проводить сравнения на основе параметров, отправленных через форму, поэтому нашими опорными значениями будут день въезда (имя поля: checkin), день освобождения номера (checkout) и сегодняшняя дата (today).
В нашей гипотетической форме даты вставляются в формате с использованием дефиса в качестве разделителя:
ДД-ММ-ГГГГ
Переменные для работы будут следующими:
var start_date = document.nome_form.checkin.value;
var end_date = document.nome_form.checkout.value;
var today_date = document.nome_form.today.value;
Code language: JavaScript (javascript)
Теперь, когда мы создали переменные со значениями, переданными формой, мы можем перейти к работе с ними: датами можно управлять как массивами:
var arr1 = start_date.split("-");
var arr2 = end_date.split("-");
var arr3 = today_date.split("-");
Code language: JavaScript (javascript)
“Разбив” наши “массивы” на основании выбранного разделителя, мы можем переместить их значения, используя стандартный формат для дат, в котором год предшествует месяцу и дню:
var d1 = new Date(arr1[2],arr1[1]-1,arr1[0]);
var d2 = new Date(arr2[2],arr2[1]-1,arr2[0]);
var d3 = new Date(arr3[2],arr3[1]-1,arr3[0]);
Code language: JavaScript (javascript)
Теперь JavaScript сможет “распознать” новые переменные как даты, поэтому мы воспользуемся функцией getTime():
var r1 = d1.getTime();
var r2 = d2.getTime();
var r3 = d3.getTime();
Code language: JavaScript (javascript)
На данном этапе все, что нам нужно сделать, это указать сравнения, которые будут производиться, например, по параметрам, отправленным формой:
if (r1 >= r2) {
alert("Дата начала не должна быть позже или равна дате окончания.");
}
else if (r3 > r1) {
alert("Дата начала не должна быть раньше сегодняшнего дня.");
}
Code language: JavaScript (javascript)
Используя этот пример в качестве основы, вы можете применять его принципы в более сложных проектах и условиях.