2013-02-21 5 views
0

Мне нужно проверить время, выбранное пользователем, дата начала должна быть больше 6 утра и меньше даты окончания, которая не должна превышать следующий день 2 часа ночи.Сравнение временных диапазонов в javascript

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

вот что я могу думать до сих пор

function compareTimes(start,end){ 
    var t1 = new date(); 
    var t2 = new date(); 

    var starttime = t1 + " " + start; 
    if (end >= '00:00'){ 
     t2.setDate(t2.getDate()+1); 
    } 
    var endtime = t2 + " " + end; 
    if(Date.parse (endtime) > Date.parse (starttime)){ 
     alert ("greater than"); 
     return true 
    } 
} 
+1

показать нам код, который вы пробовали –

+0

Что находится в ' start' и 'end'? Он выглядит как строка, отформатированная как 'HH: nn', но гарантировано ли это? – Martijn

+0

@Martijn да именно так, как вы сказали –

ответ

0

Следующая функция добавляет строку времени, такую ​​как указанная вами, к дате и возвращает ее как новый объект Date. Если вы не укажете дату, она будет использовать сегодняшнюю дату.

function setDateTime(timeString, date) { 
    var result = (date ? new Date(date) : new Date()) 
    , match = /(\d+):(\d+)/.exec(timeString) 
    ; 
    result.setHours(Number(match[1]), Number(match[2]), 0, 0); 
    return result; 
} 

После того, как вы получили ваш startDate = setDateTime(start); и ваш endDate = setDateTime(end);, вы можете использовать метод getHours чтобы выяснить, если это до или после 2 часов или 6 часов.

N.B. вы должны, вероятно, проверить, есть ли час < 6, и это так, добавьте к нему день (endDate.setDate(endDate.getDate() + 1);, в противном случае ваша дата окончания будет до вашей даты начала. :-)

+0

Большое спасибо, вот что я имел в виду, но не знал, как его реализовать –

1

Попробуйте эту библиотеку. Функция дифференциации должна работать на вас. http://momentjs.com

+0

спасибо за ваш ответ, но мне нужно будет аннулировать библиотеки (страница уже загружена) –

+0

@Digitalfortress: Я так понимаю, вы хотите ** избегать ** библиотек ...:) Но какое это имеет значение, загружена ли страница? Вы можете добавить библиотеку и перезагрузить страницу, нет? – Martijn

+0

Извините за опечатку :) Ну, это мнение клиентов! –

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