Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Увеличить дату на один день

#javascript #java #jquery #jsp


Есть web-сайт java, на форму прикрутил datepicker jQuery.
Для выборки с БД нужно сравнивать 2 даты, а точнее, есть переход с одного дня на
другой, например есть некая смена 1 (её время с 22-00 01.01.2016 по 7-00 02.01.2016).

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

Как это правильно реализовать? Смены определяю так: 

if (gang.equals("1")){time_start = "22:00:00"; time_end = "7:00:00";} 

    


Ответы

Ответ 1



Чтобы получить значение даты в js на сутки больше (делаю вывод из темы вопроса), чем имеющееся значение, достаточно сделать так: // date - какая-то имеющаяся дата date.setDate(date.getDate() + 1) //если дата на стыке месяца, все равно корректно рассчитается браузером В Java, насколько могу судить по документации, должно сработать: //date - инстанс java.util.Calendar date.add(Calendar.DAY_OF_MONTH, 1); В Oracle, если используется тип DATE, достаточно сделать date + 1, что даст дату следующую за date. В целом, подобные вещи, как мне кажется, лучше делать в бд при запросе отчета. Т.к. в бд все равно должны быть идентификаторы смен, либо данные о том, какая смена работает ночью, а так же, для построения отчета, необходимо отправить в процедуру какой-либо идентификатор группы, то логично в процедуре построения отчета сделать проверку, что если смена работает на стыке дат - проверять на сутки больше (грубо говоря).

Ответ 2



// Дата текущего дня. const today = new Date(); // Добавляем 3 дня, например. today.setDate(today.getDate() + 3); // Устанавливаем значения для полей ввода. window['input_1031906_1'].valueAsDate = today; // Другие способы вывода. window['input_1031906_2'].value = today.toLocaleDateString('ru-RU'); window['input_1031906_3'].value = today.toISOString().slice(0, 16);

Другие способы вывода



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

Отправить комментарий