方法:PHP、JQ、JS 获取两个日期之间所有日期

php

public function getDatesBetweenTwoDays($startDate,$endDate){
        $dates = [];
        if(strtotime($startDate)>strtotime($endDate)){
            //如果开始日期大于结束日期,直接return 防止下面的循环出现死循环
            return $dates;
        }elseif($startDate = $endDate){
            //开始日期与结束日期是同一天时
            array_push($dates,$startDate);
            return $dates;
        }else{
            array_push($dates,$startDate);
            $currentDate = $startDate;
            do{
                $nextDate = date('Y-m-d', strtotime($currentDate.' +1 days'));
                array_push($dates,$nextDate);
                $currentDate = $nextDate;
            }while($endDate != $currentDate);
            return $dates;
        }
    }

JQ

Date.prototype.format=function (){
    var s='';
    s+=this.getFullYear()+'-';          // 获取年份。
    s+=(this.getMonth()+1)+"-";         // 获取月份。
    s+= this.getDate();                 // 获取日。
    return(s);                          // 返回日期。
};

function getAll(begin,end){
    var ab = begin.split("-");
    var ae = end.split("-");
    var db = new Date();
    db.setUTCFullYear(ab[0], ab[1]-1, ab[2]);
    var de = new Date();
    de.setUTCFullYear(ae[0], ae[1]-1, ae[2]);
    var unixDb=db.getTime();
    var unixDe=de.getTime();
    for(var k=unixDb;k<=unixDe;){
    console.log((new Date(parseInt(k))).format());
    k=k+24*60*60*1000;
    }
}

getAll('2016-06-24','2016-08-25');

原生JS

    var date_all=[],i=0;
 
    function getDate(datestr){
      var temp = datestr.split("-");
      var date = new Date(temp[0],temp[1]-1,temp[2]);
      console.log(date);
      return date;
    }
    var start = "2016-09-27";
    var end = "2017-01-05";
    var startTime = getDate(start);
    var endTime = getDate(end);
    while((endTime.getTime()-startTime.getTime())>=0){
      var year = startTime.getFullYear();
      var month = (startTime.getMonth()+1).toString().length==1?"0"+(startTime.getMonth()+1).toString():(startTime.getMonth()+1).toString();
      var day = startTime.getDate().toString().length==1?"0"+startTime.getDate():startTime.getDate();
      date_all[i]=year+"-"+month+"-"+day;
      startTime.setDate(startTime.getDate()+1);
      i+=1;
    }

JQuery 判断两个日期相差多少天,Math.abs是取绝对值,可以去掉该函数判断sDate1和sDate2

var days = daysBetween('2016-11-01','2016-11-02');
/**
* 根据两个日期,判断相差天数
* @param sDate1 开始日期 如:2016-11-01
* @param sDate2 结束日期 如:2016-11-02
* @returns {number} 返回相差天数
*/
function daysBetween(sDate1,sDate2){
//Date.parse() 解析一个日期时间字符串,并返回1970/1/1 午夜距离该日期时间的毫秒数
var time1 = Date.parse(new Date(sDate1));
var time2 = Date.parse(new Date(sDate2));
var nDays = Math.abs(parseInt((time2 - time1)/1000/3600/24));
return nDays;
};

猜你喜欢

转载自blog.csdn.net/qq_28137309/article/details/81806018