У меня есть следующий код
datePicker.change(function(){
dateSet = datePicker.val();
dateMinimum = dateChange();
dateSetD = new Date(dateSet);
dateMinimumD = new Date(dateMinimum);
if(dateSetD<dateMinimumD){
datePicker.val(dateMinimum);
alert('You can not amend down due dates');
}
})
dateSet = "01/07/2010" dateMinimum = "23/7/2010"
Оба - британский формат. Когда объекты даты сравнены, dateSetD должен быть меньше, чем dateMinimumD, но это не. Я думаю, что это относится к фактам, я использую британские даты dd/mm/yyyy. Что я должен был бы изменить для получения этой работы?
Конструктор JavaScript Date
не анализирует строки в этой форме (в формате Великобритании или США). См. Подробности в спецификации , но вы можете строить даты по частям:
new Date(year, month, day);
MomentJS может быть полезен для гибкой работы с датами. (Этот ответ ранее был связан с этой библиотекой , но долгое время не поддерживался.)
dateSet.split('/')
Да, проблема с используемым форматом даты. Если вы не устанавливаете формат даты, по умолчанию используется дата 'мм / дд / гг
. Таким образом, вы должны установить предпочтительный формат даты при его создании следующим образом при создании средства выбора даты:
$(".selector" ).datepicker({ dateFormat: 'dd/mm/yyyy' });
или вы можете установить его позже как:
$.datepicker.formatDate('dd/mm/yyyy');
Когда вы пытаетесь создать объект даты:
new Date(year, month, day, hours, minutes, seconds, milliseconds)
Пример:
dateSetD = new Date(dateSet.year, dateSet.month, dateSet.day);
Примечание: месяц объекта JavaScript Date начинается с 00, поэтому вам необходимо соответствующим образом скорректировать набор дат.