Как с помощью Javascript убедиться, что диапазон дат действителен?

Как лучше всего в JavaScript определить, попадает ли указанная дата в допустимый диапазон?

Примером этого может быть проверка, является ли введенный пользователем requestedDate частью следующей допустимой рабочей недели. Обратите внимание, что это не просто проверка того, больше ли одна дата другой, поскольку допустимая дата будет равна или больше нижнего предела диапазона, но меньше или равна верхнему пределу диапазона.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
15
0
44 881
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Так что, если я сейчас понимаю, вам нужно посмотреть, не больше ли одна дата, чем другая.

function ValidRange(date1,date2)
{
   return date2.getTime() > date1.getTime();
}

Затем вам нужно проанализировать строки, которые вы получаете из пользовательского интерфейса, с помощью Date.parse, например:

ValidRange(Date.parse('10-10-2008'),Date.parse('11-11-2008'));

Это поможет?

Проблема не столько в проверке, не больше ли одна дата, чем на другую, сколько в проверке, находится ли одна дата в пределах заданного диапазона допустимых дат. Например, если бизнес-требование заключается в том, чтобы задача была решена в течение следующих семи дней, вы хотите убедиться, что запланированная дата меньше или равна семи дням от текущей даты.

rjzii 25.05.2010 21:42
Ответ принят как подходящий

На самом деле это проблема, которую я видел раньше, во многих своих работах, и следующий фрагмент кода - мой ответ на эту проблему.

// checkDateRange - Checks to ensure that the values entered are dates and 
//     are of a valid range. By this, the dates must be no more than the 
//     built-in number of days appart.
function checkDateRange(start, end) {
   // Parse the entries
   var startDate = Date.parse(start);
   var endDate = Date.parse(end);
   // Make sure they are valid
    if (isNaN(startDate)) {
      alert("The start date provided is not valid, please enter a valid date.");
      return false;
   }
   if (isNaN(endDate)) {
       alert("The end date provided is not valid, please enter a valid date.");
       return false;
   }
   // Check the date range, 86400000 is the number of milliseconds in one day
   var difference = (endDate - startDate) / (86400000 * 7);
   if (difference < 0) {
       alert("The start date must come before the end date.");
       return false;
   }
   if (difference <= 1) {
       alert("The range must be at least seven days apart.");
       return false;
    }
   return true;
}

Теперь пара замечаний по поводу этого кода: функция Date.parse должна работать для большинства типов ввода, но, как известно, имеет проблемы с некоторыми форматами, такими как «ГГГГ ММ ДД», поэтому вам следует проверить это перед использованием. Однако я, кажется, помню, что большинство браузеров интерпретируют строку даты, указанную в Date.parse, на основе настроек региона компьютера.

Кроме того, множитель для 86400000 должен соответствовать диапазону дней, который вы ищете. Так что, если вы ищете свидания с интервалом не менее одной недели, то это должно быть семь.

Пожалуйста, обновите формат начала и конца проверки Диапазон дат (начало, конец) его очень сложно изменить

John 04.07.2012 17:17

var myDate = new Date(2008, 9, 16);

// is myDate between Sept 1 and Sept 30?

var startDate = new Date(2008, 9, 1);
var endDate = new Date(2008, 9, 30);

if (startDate < myDate && myDate < endDate) {
    alert('yes');
    // myDate is between startDate and endDate
}

Существует множество форматов, которые вы можете передать конструктору Date () для создания даты. Вы также можете построить новую дату с текущим временем:

var now = new Date();

и задаем ему различные свойства:

now.setYear(...);
now.setMonth(...);
// etc

См. http://www.javascriptkit.com/jsref/date.shtml или Google для получения дополнительной информации.

Другие вопросы по теме