我有一个以这种格式输入日期的文本字段:yyyy-mm-dd,如何为用户输入添加一天?我有以下代码,但它不起作用......
users_date = document.getElementById('users_date').value;
var date = new Date(users_date);
var next_date = new Date();
next_date .setDate(date.getDate()+1);
document.getElementById('next_date').value = next_date;
第一个问题是第二个问题的日期格式是'Mon Aug 05 2013 16:24:40 GMT-0500(Horaest.Pacífico,Sudamérica)'
第二个问题是,当用户输入像“2013-01-01”或“2013-08-01”这样的第一天时,它会显示'Sun Sep 01 2013 16:26:06 GMT-0500( Horaest.Pacífico,Sudamérica)'总是
例如,如果用户输入2013-01-01我希望另一个文本字段为2013-01-02或2013-08-31,则显示2013-09-01,我该怎么做?
谢谢!
ITS不重复,因为其他帖子没有形成日期!!!!
答案 0 :(得分:1)
在ES5之前,没有解析日期的标准。现在有一个format是ISO8601的版本,但是所有正在使用的浏览器都不支持它,并且通常不用于用户输入。
通常会请求格式或使用返回特定格式的“日期选择器”。从那里,解析字符串以创建Date对象非常简单:
// s is date string in d/m/y format
function stringToDate(s) {
var b = s.split(/\D/);
return new Date(b[2], --b[1], b[0]);
}
对于ISO8601格式(y-m-d),只需更改部件的顺序:
// s is date string in y/m/d format
function isoStringToDate(s) {
var b = s.split(/\D/);
return new Date(b[0], --b[1], b[2]);
}
要将一天添加到Date对象,只需添加一天:
var now = new Date();
var tomorrow = now.setDate(now.getDate() + 1);
答案 1 :(得分:0)
这应该有效:
var date = new Date(document.getElementById('users_date').value);
var next_date = new Date(date.getTime() + 24*60*60*1000); // adding a day
document.getElementById('next_date').value = next_date.getFullYear() + "-" +
(next_date.getMonth()++) + "-" + next_date.getDate();
请注意Date#getMonth()
从零开始。因此,增量。