var selectedDateFromCalendar = new Date();
selectedDateFromCalendar = document.getElementById('mydate').value;
你似乎是试图建立selectedDateFromCalendar的类型,但JavaScript的变量没有类型,值吗,所以只分配值。
表单控件的值始终是一个字符串,因此即使您最初将Date指定为值,selectedDateFromCalendar现在是一个字符串。
var diff = selectedDateFromCalendar - currentdate ;
这试图减去另一个字符串。它在工作中可以将字符串转换为数字(例如'5' - '3'
),但不适用于其他类型的字符串。
由于从表单输入返回的值是一个字符串,因此必须对其进行解析。 永远不要使用Date.parse或Date构造函数来解析字符串。我无法强调这一点,只是不这样做。
你应该指明你想要的字符串格式。然后,手动解析字符串(一个库可以帮助但不是必须的)例如
// Parse and validate a string in DMY format
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);
}
// Get the date from a form and subtract from today's date
function dateDiff(idIn, idOut) {
var d = parseDMY(document.getElementById(idIn).value);
var result;
if (isNaN(d)) {
result = 'Invalid date';
} else {
result = d - new Date(); // difference in milliseconds
}
document.getElementById(idOut).textContent = result;
}
<label for="starDate">Start date (dd/mm/yyyy)<input id="startDate" name="startDate" value="25/12/2015"></label>
<br>
<button onclick="dateDiff('startDate','result')">Get date diff</button>
<div id="result"></div>
的可能的复制[获取在JavaScript 2个日期之间的差异?(http://stackoverflow.com/questions/3224834/get-difference-between-2-dates-in- javascript) – madox2
不需要var selectedDateFromCalendar = new Date()然后将其设置为下一行输入字段的值。只需执行此操作“var selectedDateFromCalendar = document.getElementById('mydate')。value;”。但是,您必须确保输入字段包含正确的日期。有几种方法,让我们知道你是否需要一些帮助。 – Will
我看到“在JavaScript中获取2个日期之间的差异?”的问题,但我的问题有一些差异。我的问题中有未定义的日期。在那个问题里已经定义了 – user5695111