0

我有一个以这种格式输入日期的文本字段: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 (Hora est. Pacífico, Sudamérica)'

第二个问题是,当用户输入一个月的第一天,如“2013-01-01”或“2013-08-01”时,它会显示“Sun Sep 01 2013 16:26:06 GMT-0500 (Hora est. Pacífico, Sudamérica)' 总是

例如,如果用户输入 2013-01-01 我希望另一个文本字段为 2013-01-02 或 2013-08-31 它显示 2013-09-01,我该怎么做?

谢谢!!

它不是重复的,因为其他帖子没有格式化日期!!!!

4

2 回答 2

1

在 ES5 之前,没有解析日期的标准。现在有一种格式是 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 格式(ymd),只需更改部分的顺序:

// 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);
于 2013-08-08T21:45:31.053 回答
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()是从零开始的。因此,增量。

于 2013-08-08T21:54:56.010 回答