我正在尝试整理一个主要是自动化的表单。我得到当前日期很好,但是我在收集用户输入日期的信息时遇到问题,将其放在表格的另一部分以及+ 1年。 I.E. D.O.B = 08/06/2016更远的表格到期时间08/06/2017。我可以自动输入当前日期,但是当我尝试从用户输入日期时,没有任何内容填写较低的日期。我尝试使用document.getElementById('dob')
获取日期function datePone()
{
var date = new Date();
var day = date.getDate(document.getElementById('dob'))
var month = date.getMonth(document.getElementById('dob')) + 1;
var year = date.getFullYear(document.getElementById('dob')) + 1;
if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;
var oneYear = year + "-" + month + "-" + day;
document.getElementById("dateOneYear").value = oneYear;
}
我已经尝试过使用set date或者使用document.getElementById('dob')创建一个新的var,但到目前为止我没有尝试过。
答案 0 :(得分:0)
由于“dob”是输入字段,要获取输入的数据需要使用value属性,请尝试
document.getElementById('dob').value
我还建议使用momentjs库来操作日期。
答案 1 :(得分:0)
你在哪里:
var day = date.getDate(document.getElementById('dob'))
getDate 方法不接受任何参数,因此忽略它们,以上等同于:
var day = date.getDate()
您没有指定您对字符串使用的格式,&#34; 08/06 / 2016&#34;很暧昧。它是代表6月8日还是8月6日?
您不应使用Date构造函数或Date.parse来解析日期字符串,编写自己的小函数或使用库。此外,在2016年2月29日之前添加一年将于2017年3月1日结束,因此您需要应用规则接受或更改为2017年2月28日。
无论如何,假设输入的格式为dd / mm / yyyy,并且您希望输出日期格式为yyyy-mm-dd,则可以使用库或小函数,如下所示:
// Parse string in d/m/y format
// If invalid, return invalid Date
function parseDMY(s){
var b = s.split(/\D/);
var d = new Date(b[2], --b[1], b[0]);
return d && d.getMonth() == b[1]? d : new Date(NaN);
}
// Return date string in yyyy-mm-dd format
function toISODate(d) {
return d.getFullYear() + '-' +
('0' + (d.getMonth()+1)).slice(-2) + '-' +
('0' + d.getDate()).slice(-2);
}
// Parse string to Date
var d = parseDMY('06/08/2016');
// Add one year
d.setFullYear(d.getFullYear() + 1);
console.log(toISODate(d));
&#13;
使用像fecha.js这样的库,你可以使用:
来解析字符串var d = fecha.parse('06/08/2016','DD/MM/YYYY');
并格式化输出:
fecha.format(d, 'YYYY-MM-DD')