Jquery datetimepicker — опережает время на 1 час

#jquery #datetimepicker

#jquery #datetimepicker

Вопрос:

В настоящее время я использую надстройку jQuery datetimepicker отсюда

Это работает практически идеально, но я в тупике, как добавить к нему небольшую функциональность. В настоящее время у меня есть два экземпляра на странице, один для времени начала и один для времени окончания. Когда я выбираю время начала, я хотел бы автоматически заполнить время окончания временем начала 1 час.

Можно ли этого добиться вообще без расширения основного скрипта?

Ответ №1:

да, это расширяет jQuery-UI Datepicker, который имеет разные обратные вызовы для обработки выбора

вы можете ознакомиться с документацией onSelect и использовать ее в своем timepicker

 $('#example').datetimepicker({
    onSelect: function(){
              //add 1 hour to start time
        }
});
  

Ответ №2:

Следующее действие добавит один час к значению даты окончания.

 $('#dtStartDate').datetimepicker({
    onSelect: function(){
       var startDate = $('#dtStartDate').datetimepicker('getDate'));
       var endDate = new Date(parseFloat(startDate.setHours(startDate.getHours() 1)))

       //Get the ending date datepart
       var endDateDatePart = endDate.getFullYear()   '/'   endDate.getMonth()   '/'   endDate.getDate();

       //calculate the ending date time part including AM/PM
       var endDateTimePart;
       if (endDate.getHours() > 12) { endDateTimePart = endDate.getHours()-12   ':'   endDate.getMinutes()   ' PM';} else {endDateTimePart = endDate.getHours()   ':'   endDate.getMinutes()   ' AM';}
       $('#dtEndDate').datetimepicker('setDate', endDateDatePart   ' '   endDateTimePart );
   }
});
  

Комментарии:

1. Хорошо, я думаю, что у меня это очень близко, но я получаю странные результаты в поле время начала, так как иногда время не вводится в поле. Не могли бы вы взглянуть? `// Увеличьте время окончания на один час, когда выбрано время начала. $ («.end»).datetimepicker({ampm: true,stepMinute: 10}); $(‘.start’).datetimepicker({ ampm: true,stepMinute: 10, onSelect: function(){ var start = $(‘.start’).datetimepicker(‘getDate’); var end = новая дата (parseFloat(start.setHours(start. Время получения() 1))); $(‘. end’).datetimepicker(‘setDate’, end ); } });`

2. @jwburnside: если вы удалите событие onSelect при выборе начальной даты, будет ли поле времени начала заполняться каждый раз?

3. Да, поле времени начала работает так, как задумано, если я просто использую исходный код <br /> $ («.start»).datetimepicker({ampm: true,stepMinute: 10});<br /> $ («.end»).datetimepicker({ampm: true,stepMinute: 10});<br /> Может быть, я неправильно инициализирую экземпляры datetimepicker при попытке использовать ваш код?

4. Попробуйте изменить var StartDate = $(‘#dtStartDate’).datetimepicker(‘getDate’)); на var StartDate = $ (this). datetimepicker(‘getDate’));

5. Нет, все та же ошибка. Кажется, это работает при первом выборе дня, а затем времени, но впоследствии оно отключается. Странно. Обновление Похоже, что виновата последняя строка: $(‘.end’).datetimepicker(‘setDate’, end);

Ответ №3:

В нижней части страницы показана функция получения и установки даты и времени.

 var ex13 = $('#example13');

ex13.datetimepicker();

$('#example13_setdt').click(function(){
    ex13.datetimepicker('setDate', (new Date()) );
});

$('#example13_getdt').click(function(){
    alert(ex13.datetimepicker('getDate'));
});
  

Не могли бы вы это использовать? Или, конечно, вам придется добавить час к получаемой дате.

 $("#endtime").datetimepicker("setDate", $("#starttime").datetimepicker("getDate"));