两个日期之间的Javascript实现天数差异
我尝试获取警报,但由于某些原因,我无法获取最后一个警报,以提供与此代码的差异。有人能解释为什么我无法获得结果吗两个日期之间的Javascript实现天数差异,javascript,Javascript,我尝试获取警报,但由于某些原因,我无法获取最后一个警报,以提供与此代码的差异。有人能解释为什么我无法获得结果吗 <!DOCTYPE HTML> <html> <body> <input type="date" id="a"> <input type="date" id="b"> <input type="submit" id="c" onclick="getValue()"> <script> fun
<!DOCTYPE HTML>
<html>
<body>
<input type="date" id="a">
<input type="date" id="b">
<input type="submit" id="c" onclick="getValue()">
<script>
function getValue(){
var startDate = document.getElementById("a").value;
var endDate = document.getElementById("b").value;
var parts1 = startDate.split('-');
var parts2 = endDate.split('-');
var date1 = new Date(parts1);
var date2 = new Date(parts2);
var difference = Math.Abs(parts1 - parts2);
difference = parseInt(difference / 86400000);
alert(difference);
}
</script>
</body>
</html>
函数getValue(){
var startDate=document.getElementById(“a”).value;
var endDate=document.getElementById(“b”).value;
var parts1=开始日期分割('-');
var parts2=endDate.split('-');
var date1=新日期(第1部分);
var date2=新日期(第2部分);
var差异=数学Abs(零件1-零件2);
差异=parseInt(差异/86400000);
警惕(差异);
}
此代码存在一些问题:
不需要数组,而Date
和parts1
就是数组。只需使用parts2
和startDate
,它们是endDate
所期望的格式的日期字符串。看起来date
构造函数实际上接受了一个数组,并将其参数视为单独传递的,但这不是必需的:Date
> new Date(['2013', '10', '29']); Tue Oct 29 2013 00:00:00 GMT-0500 (CDT)
不存在Math.Abs
就是你要找的Math.abs
- 对日期对象使用
对其进行数学运算:getTime()
math.abs(date1.getTime()-date2.getTime())代码>
.您犯了一个简单的错误。只需将减法行更改为下面的一行即可
var difference = Math.abs(date1 - date2);
由于您得到的是标准格式的直接日期对象,所以您应该直接减去这些对象。它只会告诉你两个日期之间的差异
好吧,实际上并不期望
数组作为参数。而且,Array
s的减法不太好(parts1-parts2
)。在您的小提琴中,这不是您对原始代码所做的唯一更改。您将Math.Abs
更改为parseInt
——它应该包含一个10的基本参数——如果date2
在date1
之后,它将返回负数。可以减去标准日期对象。而Math.Abs()只是一个打字错误。投反对票是没有道理的。我没有投你反对票;我只是指出这不是你唯一的改变。使用getTime
更加明确;当你减去两个Date
对象时,它被隐式转换为毫秒,所以我认为最好显示出来。我的错误。错过数学课。abs()。无论如何,希望它现在能工作。OP已经做了所有的事情,只是做了简单的更改。请参阅我的评论@codeSpy的答案,你接受了为什么getTime
更好,即使减去Date
对象可以在你的浏览器中工作。