各种时间函数

Posted 芒果有毒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各种时间函数相关的知识,希望对你有一定的参考价值。

1、判断两个日期的大小(t2比t1大返回true,否则返回false)

function compareDate(t1, t2){
    var strs1= new Array(); //定义一数组
    strs1=t1.split("-"); //字符分割
    var strs2= new Array(); //定义一数组
    strs2=t2.split("-"); //字符分割
    if (strs1[2].length == 1) {
      strs1[2] = ‘0‘ + strs1[2];
    }
    if (strs2[2].length == 1) {
      strs2[2] = ‘0‘ + strs2[2];
    }
    if(parseInt(strs1[0])> parseInt(strs2[0])) { return false; }
    else if(parseInt(strs1[0]) <parseInt( strs2[0])) { return true; }
    else{}
    if(parseInt(strs1[1] )> parseInt(strs2[1])) { return false; }
    else if(parseInt(strs1[1]) <parseInt( strs2[1])) { return true; }
    else{}
    if (parseInt(strs1[2]) > parseInt(strs2[2])) { return false; }
    else if (parseInt(strs1[2]) <= parseInt(strs2[2])) { return true; }
    else{}
    return true;
}

2、一个日期过几天后是哪一天?

function dateAfter(date,days){
    var  startDate  =  new  Date  (date);
    var  intValue  =  0;  
    var  endDate  =  null;  

    intValue  =  startDate.getTime();            
    intValue  +=  days  *  (24  *  3600  *  1000);
    endDate  =  new  Date  (intValue);  
    var year = endDate.getFullYear();
    var month = (endDate.getMonth()+1)<10 ? ‘0‘+(endDate.getMonth()+1) : (endDate.getMonth()+1);
    var day = endDate.getDate() < 10 ? ‘0‘+endDate.getDate() : endDate.getDate();
    return year+"-"+ month+"-"+ day;  
}

3、两个日期相隔多少天

function  DateDiff(sDate1,  sDate2){    //sDate1和sDate2是2002-12-18格式  
    var  aDate,  oDate1,  oDate2,  iDays  
    aDate  =  sDate1.split("-")  
    aDate[1] = aDate[1].length == 1 ? ‘0‘ + aDate[1] : aDate[1];
    aDate[2] = aDate[2].length == 1 ? ‘0‘ + aDate[2] : aDate[2];
    oDate1  =  new  Date(aDate[1]  +  ‘-‘  +  aDate[2]  +  ‘-‘  +  aDate[0])    //转换为12-18-2002格式  
    aDate  =  sDate2.split("-")  
    aDate[1] = aDate[1].length == 1 ? ‘0‘ + aDate[1] : aDate[1];
    aDate[2] = aDate[2].length == 1 ? ‘0‘ + aDate[2] : aDate[2];
    oDate2  =  new  Date(aDate[1]  +  ‘-‘  +  aDate[2]  +  ‘-‘  +  aDate[0])  
    iDays  =  parseInt(Math.abs(oDate1  -  oDate2)  /  1000  /  60  /  60  /24)    //把相差的毫秒数转换为天数  
    return  iDays + 1
}

4、获取两个日期中间的所有日期(数组)

// 给String对象添加getDate方法,使字符串形式的日期返回为Date型的日期  
String.prototype.getDate = function () {
  var strArr = this.split(‘-‘);
  return new Date(strArr[0], strArr[1] - 1, strArr[2]);

}
// 给Date对象添加getYMD方法,获取字符串形式的年月日  
Date.prototype.getYMD = function () {

  // 将结果放在数组中,使用数组的join方法返回连接起来的字符串,并给不足两位的天和月十位上补零  
      return [this.getFullYear(), getDaysArray.fz(this.getMonth() + 1), this.getDate()].join("-");

}
const getDaysArray = {
  // 获取间隔天数  
  getDays: function(day1, day2) {
      // 获取入参字符串形式日期的Date型日期  
      var st = day1.getDate();
      var et = day2.getDate();

      var retArr = [];

      // 获取开始日期的年,月,日  
      var yyyy = st.getFullYear(),
          mm = st.getMonth(),
            dd = st.getDate();

      // 循环  
      while (st.getTime() != et.getTime()) {
            retArr.push(st.getYMD());

            // 使用dd++进行天数的自增  
            st = new Date(yyyy, mm, dd++);

      }

        // 将结束日期的天放进数组  
        retArr.push(et.getYMD());
        retArr.splice(0, 1);

        return retArr; // 或可换为return ret;  

  },


  // 给月和天,不足两位的前面补0  
  fz: function(num) {
    if (num < 10) {
        num = "0" + num;

    }
    return num

  }
}
module.exports = {
    getDays: getDaysArray.getDays
}

 

以上是关于各种时间函数的主要内容,如果未能解决你的问题,请参考以下文章

小程序各种功能代码片段整理---持续更新

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数

jQuery的DOM操作

在 Visual Studio 中创建构造函数的代码片段或快捷方式