js时间处理

js获取指定日期的前一天/后一天

date代表指定日期,格式:2018-09-27

day代表天数,-1代表前一天,1代表后一天

// date 代表指定的日期,格式:2018-09-27
// day 传-1表始前一天,传1表始后一天
// JS获取指定日期的前一天,后一天
function getNextDate(date, day) {
  var dd = new Date(date);
  dd.setDate(dd.getDate() + day);
  var y = dd.getFullYear();
  var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
  var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
  return y + "-" + m + "-" + d;
};

获取当前时间

function getNowTime() {
	var date = new Date();
	var Y = date.getFullYear() + '-';
	var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
	var D = date.getDate()< 10 ? '0' +date.getDate() + ' ': date.getDate() + ' ';
	var h = date.getHours()< 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
	var m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':';
	var s = date.getSeconds() < 10 ? '0' + date.getSeconds() + ':' : date.getSeconds() ;
	return Y + M + D + h + m + s;
}

获取指定日期的前7天连续日期

		今天:getDateStr(0)
    昨天:getDateStr(-1)
    明天:getDateStr(1)
    function getDateStr (AddDayCount){
		    var now = new Date();
		    now.setDate(now.getDate() + AddDayCount);   //获取AddDayCount天后的日期
		    var year = now.getFullYear(); //得到年份
		    var month = now.getMonth(); //得到月份
		    var date = now.getDate(); //得到日期
		    var day = now.getDay(); //得到周几
		    var hour = now.getHours(); //得到小时
		    var minu = now.getMinutes(); //得到分钟
		    var sec = now.getSeconds(); //得到秒
		    month = month + 1;
		    if(month < 10) month = "0" + month;
		    if(date < 10) date = "0" + date;
		    if(hour < 10) hour = "0" + hour;
		    if(minu < 10) minu = "0" + minu;
		    if(sec < 10) sec = "0" + sec;
		
		    var time = "";
		    return time = year + "-" + month + "-" + date + " " + " " + hour + ":" + minu + ":" + sec;
}

时间转化成时间戳

var startT = new Date("2020-05-08 00:00:00");
var startStamp = startT.getTime();

时间戳转化成时间

function timestampToTime(timestamp) {
    if(timestamp.length == 10) {
        timestamp = timestamp * 1000
    }
    var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
     var Y = date.getFullYear() + '-';
     var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
     var D = date.getDate()< 10 ? '0' +date.getDate() + ' ': date.getDate() + ' ';
     var h = date.getHours()< 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
     var m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':';
     var s = date.getSeconds() < 10 ? '0' + date.getSeconds()  : date.getSeconds() ;
    return Y + M + D + h + m + s;
}

js把字符串(yyyymmdd)转换成日期格式(yyyy-mm-dd)

var r="20112233".replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3")
console.log(r)

let pattern = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/;
let timeStr = ('20211104123000').replace(pattern, '$1-$2-$3 $4:$5:00');
console.log(timeStr);

自定义格式 date:时间戳 ,fmt:YYYY-MM-DD HH:mm:ss 格式

var DateToformatDate = (date, fmt) => {
       //按格式返回当前时间
        if (fmt == '' || fmt == null) {
            fmt = 'YYYY-MM-DD';
        }
        if (date == '' || date == null) {
            date = new Date();
        } else {
            if (Object.prototype.toString.call(date) !== '[object Date]') {
                date = new Date(date);
            }
        }
        var o = {
            "M+": date.getMonth() + 1, //月份
            "D+": date.getDate(), //日
            "H+": date.getHours(), //时
            "m+": date.getMinutes(), //分
            "s+": date.getSeconds(), //秒
        };
        if (/(Y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
        for (var k in o)
            if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        return fmt;
    };

console.log(DateToformatDate("","YYYY年MM月DD日HH:mm"))
console.log(DateToformatDate("","YYYY-MM-DD HH:mm:ss"))

获取两个时间之间的间隔小时

function getHour(s1,s2) {
        s1 = new Date(s1.replace(/-/g, '/'));
        s2 = new Date(s2.replace(/-/g, '/'));
	 var ms=""
	 let s1Time=s1.getTime()
	 let s2Time=s2.getTime()
	 if(s1Time<s2Time){
		 ms ="-"+Math.abs( s1Time- s2Time);
	 }else{
		  ms = Math.abs( s1Time- s2Time);
	 }
        return ms / 1000 / 60 / 60;
    }
console.log(getHour("2020-12-29 17:30:00","2020-12-29 18:30:00"))

// 方法二:
		var dt1 = "2009-11-5 10:30"  
			    var dt2 = "2009-11-8 9:20"
			    function getHoursDiff(dt1,dt2) {
			        if(typeof(dt1)=="string") {
			            dt1=new Date(dt1.replace(/-/,'/'));
			            dt2=new Date(dt2.replace(/-/,'/'));
			        }
			        var res=dt2-dt1;
			        if(isNaN(res))
			            throw Error("invalid dates arguments");
			        return res/(1000*60*60);
			    }
			    var re=getHoursDiff(dt1,dt2);
			    var h=parseInt(re);
			    var m=parseInt((re-h)*60);
			    alert("时间相隔"+h+"小时"+m+"分钟");






// 获取上周第一天和最后一天

/***参数都是以周一为基准的***/
		//上周的开始时间
		console.log(getTime(7));
		//上周的结束时间
		console.log(getTime(1));
		//本周的开始时间
		console.log(getTime(0));
		//本周的结束时间
		console.log(getTime(-6));
		function getTime(n) {
			var now = new Date();
			var year = now.getFullYear();
			//因为月份是从0开始的,所以获取这个月的月份数要加1才行
			var month = now.getMonth() + 1;
			var date = now.getDate();
			var day = now.getDay();
			//判断是否为周日,如果不是的话,就让今天的day-1(例如星期二就是2-1)
			if (day !== 0) {
				n = n + (day - 1);
			} else {
				n = n + day;
			}
			if (day) {
				//这个判断是为了解决跨年的问题
				if (month > 1) {
					month = month;
				}
				//这个判断是为了解决跨年的问题,月份是从0开始的
				else {
					year = year - 1;
					month = 12;
				}
			}
			now.setDate(now.getDate() - n);
			year = now.getFullYear();
			month = now.getMonth() + 1;
			date = now.getDate();
			s = year + "年" + (month < 10 ? ('0' + month) : month) + "月" + (date < 10 ? ('0' + date) : date) + "日";
			return s;
		}
			

获取上月的第一天和最后一天

function getLastDate(type) { //type:first,上月第一天,last,上月最后一天
		var nowdays = new Date();
		var year = nowdays.getFullYear();
		var month = nowdays.getMonth();
		if (month == 0) {
			month = 12;
			year = year - 1;
		}
		if (month < 10) {
			month = '0' + month;
		}

		var myDate = new Date(year, month, 0);
		var startDate = year + '-' + month + '-01 00:00:00'; //上个月第一天
		var endDate = year + '-' + month + '-' + myDate.getDate() + ' 23:59:00'; //上个月最后一天
		if (type == "first") {
			return startDate
		} else if (type == "last") {
			return endDate
		}
	}

获得某月的最后一天

console.log(getLastDay(2020,12))
function getLastDay(year,month) {        
     var new_year = year;    //取当前的年份         
     var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)         
     if(month>12) {        
      new_month -=12;        //月份减         
      new_year++;            //年份增         
     }        
     var new_date = new Date(new_year,new_month,1);                //取当年当月中的第一天         
     return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期         
} 

获取两个日期之间相隔的所有日期

function getDayAll(starDay, endDay) {
        
       var arr = [];
        var dates = [];
    
        // 设置两个日期UTC时间
       var db = new Date(starDay);
       var de = new Date(endDay);
    
        // 获取两个日期GTM时间
       var s = db.getTime() - 24 * 60 * 60 * 1000;
       var d = de.getTime() - 24 * 60 * 60 * 1000;
    
        // 获取到两个日期之间的每一天的毫秒数
       for (var i = s; i <= d;) {
          i = i + 24 * 60 * 60 * 1000;
            arr.push(parseInt(i))
       }
        
        // 获取每一天的时间  YY-MM-DD
        for( var j in arr ){
            var time = new Date(arr[j]);
            var year = time.getFullYear(time);
            var mouth = (time.getMonth() + 1)>=10?(time.getMonth() + 1):('0'+(time.getMonth() + 1));
            var day = time.getDate()>=10?time.getDate():('0'+time.getDate());
            var YYMMDD = year + '-' + mouth + '-' + day;
            dates.push(YYMMDD)
        }
        
        return dates
    }

    var dataAll = getDayAll('2020-01-01','2020-02-01');    
    console.log(dataAll)

获取两个日期之间相隔多少小时年月日时分秒

 	var startTime = "2021-07-01";
    var s1 = new Date(startTime.replace(/-/g, "/")),
    s2 = new Date(),
    runTime = parseInt((s2.getTime() - s1.getTime()) / 1000);
    var year = Math.floor(runTime / 86400 / 365);
    runTime = runTime % (86400 * 365);
    var month = Math.floor(runTime / 86400 / 30);
    runTime = runTime % (86400 * 30);
    var day = Math.floor(runTime / 86400);
    runTime = runTime % 86400;
    var hour = Math.floor(runTime / 3600);
    runTime = runTime % 3600;
    var minute = Math.floor(runTime / 60);
    runTime = runTime % 60;
    var second = runTime;
    console.log(year+"年"+month+"月"+day+"日"+" "+hour+":"+minute+":"+second);

根据所选择的开始日期与结束日期获取之间的月份

function getMonthBetween(start, end) {
    //传入的格式YYYY/MM
    var result = [];
    var s = start.split("/");
    var e = end.split("/");
    var min = new Date();
    var max = new Date();
    min.setFullYear(s[0], s[1] * 1 - 1, 1); //开始日期
    max.setFullYear(e[0], e[1] * 1 - 1, 1); //结束日期
    var curr = min;
    while (curr <= max) {
        var month = curr.getMonth();
        let mon = month + 1 < 10 ? "0" + (month + 1) : month + 1;
        var str = curr.getFullYear() + "/" + mon;
        var s = curr.getFullYear() + "/0";
        if (str == s) {
            str = curr.getFullYear() + "/1";
        }
        result.push(str);
        curr.setMonth(month + 1);
    }
    return result;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值