2016-01-21 3 views
0

У меня есть ряд с переменными, которые выглядят так:Функция, которая проверяет, является ли даты нескольких форматов в диапазоне

startDate = 2015-12-01 endDate = 2015-12-31

У меня свидание, мне нужно, чтобы проверить, находится в пределах диапазона, который выглядит как это:

dateToCheck = 01/15/2016

Я пытаюсь написать функцию, которая возвращает истинное или ложное ли это дата в диапазоне:

function dateInRange(date, startDate, endDate) { 

} 

В PHP вы можете преобразовать любую строку даты в метку времени, я не уверен, как это сделать в Javascript из нескольких форматов?

+1

Вы можете использовать [ '. getTime'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime). –

+0

вы также можете преобразовать их в строку: YYYY-MM-DD и сравнить их таким образом, но лучше всего делать с отметками времени – Gavriel

+0

У вас ['Date.parse()'] (https://developer.mozilla.org/ en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse), или есть библиотеки, такие как [Moment.js] (http://momentjs.com/), которые имеют более интеллектуальные синтаксические синтаксические анализаторы дат. – Blazemonger

ответ

4

Вы можете создать функцию, которая анализирует дату и возвращает дату объект

function createDate(date) { 
    if (date.indexOf('-') !== -1) { 
     var parts = date.split('-'); 
     return new Date(parts[0], parts[1]-1, parts[2]); 
    } else if (date.indexOf('/') !== -1) { 
     var parts = date.split('/'); 
     return new Date(parts[2], parts[0]-1, parts[1]); 
    } else { 
     return new Date(date); 
    } 

} 

Затем вы можете разобрать даты и сделать

function dateInRange(date, startDate, endDate) { 

    return date > startDate && date < endDate; 

} 

FIDDLE

+0

return new Дата (дата) || 0; не очень полезно, так как это когда-нибудь будет возвращено Date, иногда integer 0 – Gavriel

+0

@Gavriel - это было просто вернуть число для сравнения '>' и т. д., а не строку 'Invalid Date' – adeneo

+0

, а другая возвращает return Date , Возможно, вы хотели вернуть новую дату (...). GetTime() повсюду? Но почему бы плохо напечатанная строка даты должна была означать 1970-01-01? – Gavriel

Смежные вопросы