一、比较年份YYYY。
1、年份相减小于0则不符合条件
2、年份相减大于1则超出
3、年份相减等于0则满足条件
4、年份相减等于1则进行第二步比较
二、比较月份MM。
1、月份相减小于1则满足条件
2、月份相减大于1则超出
3、月份相减等于1则进行第三步比较
三、比较日期DD。
1、月份相减小于等于1则满足条件
2、月份相减大于1则超出
你好,
首先来分析一个问题,两个日期是什么格式的?假设是字符串格式:
可能是: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><head>
<title>js 两个日期间隔月数</title>
<script type="text/javascript">
window.onload = function () {
document.getElementById("btn_Diff").onclick = function () {
var d1 = document.getElementById("txt_Date1").value//日期1
var d2 = document.getElementById("txt_Date2").value//日期2
//年*12+月
var m1 = parseInt(d1.split("-")[1].replace(/^0+/, "")) + parseInt(d1.split("-")[0]) * 12
var m2 = parseInt(d2.split("-")[1].replace(/^0+/, "")) + parseInt(d2.split("-")[0]) * 12
alert(m2-m1)
}
}
</script>
</head>
<body>
<input id="txt_Date1" type="text" value="2013-09-25"/>
<input id="txt_Date2" type="text" value="2014-01-15"/>
<input id="btn_Diff" type="button" value="Diff"/>
</body>
</html>
效果如下: