各种时间函数
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 }