首先,我们模拟一个例子
引入js文件
<script type="text/javascript" src="jquery.min.js"></script>
html页面如下:
<body> <div> 请输入第一个日期:<input type="date" id="Date1" /> <br/> 请输入第二个日期:<input type="date" id="Date2" /> <br/> 请输入日期相差数: <input type="text" id="differ" />(参数:1:相差天数,2:相差小时数,3:相差分钟数,4:相差毫秒数) <br/> <input type="button" value="调用测试" onclick="TestClick()" /> </div> </body>
js中的方法如下:
<script> //获取当前日期 var getNowDate = function () { var d = new Date(); var year = d.getFullYear(); var month = d.getMonth() + 1; var day = d.getDate(); var dateStr = year + '-' + getFormatDate(month) + '-' + getFormatDate(day); return dateStr; } //格式化日期的月份或天数的显示(小于10,在前面增加0) function getFormatDate(value) { var result; result = value < 10 ? ("0" + value) : value; return result; } //获取与毫秒数的转化比例(相差天数:1,相差小时数:2,相差分钟数:3,相差秒数:4) var getDifferScale = function (value) { var format; //获取转化比(天数跟毫秒数的比例) if (value == 1) { format = parseFloat(24 * 60 * 60 * 1000); } //获取转化比(小时数跟毫秒数的比例) else if (value == 2) { format = parseFloat(60 * 60 * 1000); } //获取转化比(分钟数跟毫秒数的比例) else if (value == 3) { format = parseFloat(60 * 1000); } //获取转化比(秒数跟毫秒数的比例) else if (value == 4) { format = parseFloat(1000); } return format; } //获取两个日期的相差日期数(differ 相差天数:1、相差小时数:2、相差分钟数:3、相差秒数:4) var getDifferDate = function (firstDate, secondDate, differ) { //1)将两个日期字符串转化为日期对象 var startDate = new Date(firstDate); var endDate = new Date(secondDate); //2)计算两个日期相差的毫秒数 var msecNum = endDate.getTime() - startDate.getTime(); //3)计算两个日期相差的天数 var dayNum = Math.floor(msecNum /getDifferScale(differ)); return dayNum; } //测试方法 var TestClick = function(){ var date1 = $("#Date1").val(); var date2 = $("#Date2").val(); var differ = $("#differ").val(); if(date1 == "" || date1==null){ alert("第一个日期不能为空"); } else if(date2 == "" || date2==null){ alert("第二个日期不能为空"); } else if(differ == "" || differ==null ){ alert("日期相差数不能为空"); } var result = getDifferDate(date1,date2,differ); console.log("输出结果:"+ result); } </script>
注:原先测试是测试日期和当前日期比较,所以有前面两个方法(获取当前日期和格式化日期)
运行结果如图:
调用输出结果:
Ps: 两个日期比较,重要的是他们之间转化率(天与毫秒的转化,时与毫秒的转化,..等)和计算方法