js插件--获取指定时间距离当前时间状态:上周,当前周,前天,昨天,今天,明天,后天,当前周,下周。

2,674

工作上遇到一个需求,对指定时间到达当前时间的‘’距离“改变其状态。


把这需求做了出来,封装好了,传参就可以使用。

/*create By suji  2018-09-07*/
//判断当前返回的是星期几
    function week(dayNum){
	    	switch(dayNum){
	    		case 7:
	    		return '日';
	    		break;
	    		case 1:
	    		return '一';
	    		break;
	    		case 2:
	    		return '二';
	    		break;
	    		case 3:
	    		return '三';
	    		break;
	    		case 4:
	    		return '四';
	    		break;
	    		case 5:
	    		return '五';
	    		break;
	    		case 6:
	    		return '六';
	    		break;
	    	}
	    }
//时间戳格式化  传参time:指定时间,nowtime:当前时间
function timeTo(time,nowtime) {
        var date = new Date(time);
        var nowdate =new Date(nowtime);
        var PY = date.getFullYear();//获取指定时间年份
        var NY = nowdate.getFullYear();//获取当前时间年份
        var Y = date.getFullYear() + '/';
        var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '/';
        var D = date.getDate() + '';
        var h = date.getHours() + '/';
        var m = date.getMinutes() + '/';
        var s = date.getSeconds();
        if(PY==NY){//判断年份是否是同一年,是的输出格式 08/01  不是的话输出格式2018/08/01
        	return M+D;
        }
        else{
        	return Y+M+D;
        }
    }
	
//对时间戳进行转化,转化成时间统一xxxx-xx-xx 00:00:00
	function timeTotime(time) {
        var date = new Date(time);
   		var Y = date.getFullYear() + '-';
        var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
        var D = date.getDate() + ' ';
        var h = 00 + ':';
        var m = 00 + ':';
        var s = 00;
        var newtime= Y+M+D+h+m+s;
        return new Date(newtime).getTime();
    }
//获取传入时间距离当前时间的天数,然后进行判断,状态分为,如果是同一天显示今天,少一天是昨天,
//少两天是前天,超过两天如果在本周显示周几,超过本周显示上周几,超过上周显示真实日期。明天,后天,
//下周同理。
	ifDate(1536600501000);//传参
	function ifDate(perDate){
		var date = new Date().getTime();//获取当前时间时间戳
		var date = timeTotime(date);//对时间戳进行转化,转化成时间统一xxxx-xx-xx 00:00:00
		var perDate =timeTotime(perDate);
		console.log(date,perDate);
		var runTime =(date-perDate)/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);
		    var day =parseInt(day);//获取相差的天数,可以为负数
		    console.log(day);
		    var nowday = new Date(date).getDay();//获取当前时间是星期几,0-6
		    if(nowday==0){//如果为0的话,把周日赋值为7   1-7分别对应周一到周日
		    	var nowday =7;
		    }
		    if(day==0){
		    	console.log('今天');
		    }
		    else if(day==1){
		    	console.log('昨天');
		    }
		    else if(day==2){
		    	console.log('前天');
		    }
		    else if(day==-1){
		    	console.log('明天');
		    }
		    else if(day==-2){
		    	console.log('后天');
		    }
		    else if(day>2&&day<nowday){//判断是否是当前周而不是上一周
		    	console.log(day,nowday);
		    	var dayNum =nowday-day;
		    	console.log('周'+(week(dayNum)));
		    }
		    else if(day>2&&day>=nowday&&day<nowday+7){//判断是否是上一周
		    	var dayNum=7-Math.abs((nowday-day));
		    	
		    	console.log('上周'+(week(dayNum)));
		    }
		    else if(day>=nowday+7){//判断是不是超过上一周,显示正常时间格式
		    	console.log(timeTo(perDate,date))
		    }
		    else if(Math.abs(day)<(7-nowday)&&day<0){//判断是否是当前周,不是下一周
		    	var dayNum = Math.abs(day)+nowday;
		    	console.log('周'+(week(dayNum)));
		    }
		    else if(Math.abs(day)>(7-nowday)&&Math.abs(day)<(7-nowday+7)&&day<0){
		    	var dayNum=Math.abs(day)+nowday-7;//判断是否是下一周
		    	console.log('下周'+(week(dayNum)));
		    }
		    else if(Math.abs(day)>(7-nowday+7)&&day<0){//判断是否超过下一周,显示正常格式
		    	console.log(timeTo(perDate,date));
		    }
		}  

这个功能感觉还是比较实用的,大家有用到可以拿去用,当然可能需要优化一下,还请大神们自己手动改一改。