Не все браузеры в использовании даты поддержки ввода типа, так что вам нужно будет с этим справиться.
Затем вы можете преобразовать значение firstdate в объект Date, добавить день, а затем вернуть дату в требуемом формате. Однако ваша проблема заключается в том, что значение ввода даты (которое является строкой даты формата ISO 8601) рассматривается как локальное, но конструктор Date будет рассматривать его как UTC.
Итак, вам нужно разобрать строку как локальную дату, затем добавить день, а затем вернуть строку в нужном формате. Приведенный ниже код является лишь примером, вы можете использовать библиотеку для обработки даты. Просто не забудьте проанализировать строку даты с помощью конструктора Date.
function getTomorrow(el) {
var form = el.form;
var start = parseISOAsLocal(form.start.value);
// Check if input date was valid
if (!start.getTime()) {
form.tomorrow.value = '';
form.start.value = 'Invalid date';
return;
}
start.setDate(start.getDate() + 1);
form.tomorrow.value = formatISODate(start);
}
function parseISOAsLocal(s) {
var b = s.split(/\D/);
var d = new Date(b[0], --b[1], b[2]);
return d && d.getMonth() == b[1]? d : new Date(NaN);
}
function formatISODate(date) {
return ('000' + date.getFullYear()).slice(-4) + '-' +
('0' + (date.getMonth() + 1)).slice(-2) + '-' +
('0' + date.getDate()).slice(-2);
}
<form>
Start (yyyy-mm-dd):
<input type="date" name="start" value="2016-08-31"><br>
Tomorrow: <input type="date" name="tomorrow" readonly><br>
<input type="button" onclick="getTomorrow(this)"
value="Show tomorrow">
</form>
Почему бы не разместить код как работоспособный фрагмент кода? – RobG
Отмеченный дубликат не так уж и полезен. OP имеет ввод даты, а не объект Date, поэтому необходимо проанализировать строку, добавить день, а затем преобразовать ее. Обратите внимание, что строка даты ISO 8601 рассматривается как локальная по дате ввода, но UTC конструктором Date. Где помощь в этом? – RobG