Arhn - архитектура программирования

Как проверить прошедшее время

я получаю как startTime 13:30:00 endTime 14:15:00 (24-часовой формат), перетаскивая ячейку таблицы html. В скрытом поле я сохраняю значения времени начала и окончания

                var hidStartTime=13:30:00;
                var hidEndTime=14:15:00;

я должен проверить, прошло ли время начала и окончания пользователей по сравнению с текущим временем клиентского компьютера, а затем сгенерировать предупреждение («Вы не можете разрешить зафиксировать встречу на прошедшее время».); Как мне проверить

            var todaysDate = new Date();
            var currentHour = todaysDate.getHours();
            var currentMinutes = todaysDate.getMinutes();

            if (currentHour < endTimeHour)
            {
                alert("You can not allow to fix appointment for past time.");
                return false;
            }

  • я должен проверить, прошло ли время запуска и окончания пользователей по сравнению с текущим временем клиентской машины, а затем сгенерировать предупреждение; 05.07.2012

Ответы:


1

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

var currDate  = new Date();
var startDate = setTime(hidStartTime);
var endDate   = setTime(hidEndTime);

// given an input string of format "hh:mm:ss", returns a date object with 
// the same day as today, but the given time.
function setTime(timeStr) {
    var dateObj = new Date();          // assuming date is today
    var timeArr = timeStr.split(':');  // to access hour/minute/second

    var hour    = timeArr[0]; 
    var minute  = timeArr[1];
    var second  = timeArr[2];

    dateObj.setHours(hour);
    dateObj.setMinutes(minute);
    dateObj.setSeconds(second);
    return dateObj;
}

// now we can subtract them (subtracting two Date objects gives you their 
// difference in milliseconds)
if (currDate - startDate < 0 || currDate - endDate < 0) {
    alert("Unfortunately, you can't schedule a meeting in the past. 
             We apologize for the inconvenience.");
}
05.07.2012
  • Ахал: var startDate = setTime(hidStartTime); var endDate = setTime (hidEndTime); startDate и endDate я получаю сегодняшнюю дату 05.07.2012
  • Сегодняшняя дата или сегодняшняя дата и время? Он должен вернуть ту же дату, что и сегодня, но с другим временем. 05.07.2012
  • см. в hidStartTime=09:15:00 hidEndTime=10:00:00, так что сейчас текущее время 03:15:00, поэтому определенно нужно генерировать предупреждение, но это не так 05.07.2012
  • Ахал, я должен проверить только прошедшее время, а не дату 05.07.2012
  • Мне жаль; Я не понимаю, почему это должно генерировать предупреждение. И время начала, и время окончания находятся в будущем (9:3 и 10:3) при условии, что дата одинакова. Извините, если я неправильно вас понял. 05.07.2012
  • Ахал, если я ошибаюсь, тогда вы также проверяете свою машину, не получаете оповещения, даже принимая значение жесткого кода 05.07.2012
  • @John: Вместо var hidStartTime=13:30:00 попробуйте поставить кавычки, например: var hidStartTime=13:30:00 05.07.2012
  • Я пробовал var time1 = setTime(13:30:00); переменная time2= setTime(13:31:00); Вы можете проверить, что это работает правильно, с помощью console.log(time1.toString()) и console.log(time2.toString()) - оба имеют разные значения времени. Это выглядит правильно. Затем вы можете проверить, что (time1 ‹ time2) верно. 05.07.2012
  • Achal i have to check only lapsed time not date @John Поскольку для сравнения мы используем объект Date Javascript, даже если вас интересует только время, дата (дд-мм-гггг) также должна быть установлена ​​на любое значение, если они равны. 05.07.2012
  • Вместо var hidStartTime=13:30:00 было бы хорошо, если бы вы могли получить строку даты и времени в hidStartTime, например: var hidStartTime=Thu, 05 Jul 2012 15:20:06 GMT. Если это возможно, это упростит проблему, а также сделает ее более надежной, поскольку у вас есть информация о часовом поясе. 05.07.2012
  • Если часть даты вызывает путаницу, другим решением является преобразование 13:30:00 в секунды без использования объекта даты Javascript. Пример: var hidStartTime=13:30:00; var arr = 13:30:00.split(:); var hidStartSecs = обр[0]*3600 + обр[1]*60 + обр[2]*1; 05.07.2012

  • 2

    Вы можете сравнить 2 объекта Date следующим образом:

    // Get current date on the client machine
    var currentDateTime = new Date(); // "Thu, 05 Jul 2012 08:05:57 GMT"
    
    // Now if you have a date string of 8:30 on the same day
    var endDateTime = Date.parse("Thu, 05 Jul 2012 08:30:00 GMT");
    
    if (currentDateTime > endDateTime) {
      alert("...");
    }
    

    Сложная часть может состоять в том, чтобы составить строку даты в формате, который может быть понят функцией Date.parse().

    05.07.2012
  • kayo:hav сравнить это время var hidStartTime=13:30:00; вар hidEndTime=14:15:00; с текущим машинным временем 05.07.2012
  • Ok. Похоже, Ахал опубликовал правильный ответ. Также обратите внимание, что если кто-то заходит на веб-сайт из другого часового пояса, это не даст правильных результатов. 05.07.2012
  • Было бы хорошо, если бы скрытое поле включало информацию о часовом поясе и абсолютное время, например, четверг, 05 июля 2012 г., 08:30:00 по Гринвичу. На стороне сервера должна быть сгенерирована такая строка. 05.07.2012
  • kayo в ответе achal var startDate = setTime (hidStartTime); var endDate = setTime (hidEndTime); startDate и endDate я получаю сегодняшнюю дату 05.07.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..