这两天在做前台页面的时候,有这样的一个业务场景,就是页面上有一个查询的时间参数,这个参数有起始时间和结束时间 ,需求中要求这两个时间之间的相隔的天数不能大于90天,这样就需要通过前台传入的时间字符串来判断这个两个时间相差是天数是否符合业务场景的要求,通过对这个这个功能的分析,我选用了js中的Date日期对象中的parse()静态方法来实现这个功能,具体的实现方式如下:
<function getDaysByDateString(dateString1,dateString2){
//获取起始时间的毫秒数
//其中dateString1.replace('/-/g','/')是将日期格式为yyyy-mm-dd转换成yyyy/mm/dd
//Date.parse()静态方法的返回值为1970年1月1日午时到当前字符串时间的毫秒数,返回值为整数
//如果传入的日期只包含年月日不包含时分秒,则默认取的毫秒数为yyyy/mm/dd 00:00:00
//取的是0时0分0秒的毫秒数,如果传入的是2015/07/03 12:20:12则取值为该时间点的毫秒数
var startDate=Date.parse(dateString1.replace('/-/g','/'));
var endDate=Date.parse(dateString2.replace('/-/g','/'));
//因为不传时分秒的时候 默认取值到dateString2的0时0分0秒时的毫秒数,这样就不包含当前天数的毫秒数
/如果计算时要包含日期的当前天,就要加上一天的毫秒数,我的业务需要,将加上了。
var diffDate=(endDate-startDate)+1*24*60*60*1000;
//计算出两个日期字符串之间的相差的天数
var days=diffDate/(1*24*60*60*1000);
//alert(diffDate/(1*24*60*60*1000));
return days;
}
下面是没有注释的代码:
function getDaysByDateString(dateString1,dateString2){
var startDate=Date.parse(dateString1.replace('/-/g','/'));
var endDate=Date.parse(dateString2.replace('/-/g','/'));
var diffDate=(endDate-startDate)+1*24*60*60*1000;
var days=diffDate/(1*24*60*60*1000);
//alert(diffDate/(1*24*60*60*1000));
return days;
}
上面这个js函数经过测试是符合自己的业务逻辑,以后如果再遇到这样的业务场景 直接拿过来就可以用了。