你好,
首先来分析一个问题,两个日期是什么格式的?假设是字符串格式:
可能是:2018/04/20,也可能是:2018/04/20 12:00:00
那接下来分情况讨论。
首先看看不含时间部分的日期格式计算:
var aDate = new Date('2018/04/23') // 通过日期字符串,初始化第一个日期对象var bDate = new Date('2018/04/25') // 同上,初始化第二个日期对象
var aDay = 24 * 60 * 60 * 1000 // 完整一天有24小时,将小时换算成毫秒时间戳
var diffDay = (bDate - aDate) / aDay // 计算间隔天数(注意日期隐式转换)
console.log(diffDay) // 2,23日-25日间隔2天
然后再来看看包含时间部分的日期格式计算:
var aDate = new Date('2018/04/23')var bDate = new Date('2018/04/25 12:00:00') // 包含时间的日期字符串
var aDay = 24 * 60 * 60 * 1000
var diffDay = (bDate - aDate) / aDay
console.log(diffDay) // 2.5,自然计算的结果
console.log(Math.floor(diffDay)) // 2,根据个人情况向下取整,整数天
console.log(Math.ceil(diffDay)) // 3,根据个人情况向上取整,整数天
希望是你想要的结果,如有疑问请追问。
这边写了代码,请保存为.html文件后测试<html>
<body>
选择开始日期: <input type="date" id="start_date" />
选择结束日期: <input type="date" id="end_date" />
<hr/>
<button type="submit" onclick="end_date=new Date(document.getElementById('end_date').value)
start_date=new Date(document.getElementById('start_date').value)
document.getElementById('showhowmanyday').innerText=(end_date.getTime()-start_date.getTime())/(24*3600*1000)">计算两个日期相差的天数</button>
<h1 id="showhowmanyday"/>
</body>
</html>
<SCRIPT LANGUAGE="JavaScript"><!--
function deal(){
//var Y = 6
//var R ="2009-11-01"
var R = document.getElementById('date').value +''
var Y = document.getElementById('month').value
alert(R)
var year=R.substr(0,4)
var month=R.substr(5,2)
var day=R.substr(8,2)
if((parseInt(month)+parseInt(Y)) >12){
year++
month = parseInt(month) + parseInt(Y) - 12
}else{
month = parseInt(month) + parseInt(Y)
}
alert(year+"-"+month+"-"+day)
R = new Date(year,month,day,00,00,00)
dateNow = new Date()
var diff = R.getTime() - dateNow.getTime()
var days = Math.floor(diff/(1000*60*60*24))
var str = "与今天相差" + days + "天"
if(R >dateNow){
alert("大于今天!"+"\n"+str)
}else{
alert("小于今天!"+"\n"+str)
}
}
//-->
</SCRIPT>
月<input type="text" id="month" value="6">
日期 <input type="text" id="date" value="2009-11-01">
<input type="button" value="submit" onClick="deal()">
这样的吗