js外掛--獲取指定時間距離當前時間狀態:上週,當前周,前天,昨天,今天,明天,後天,當前周,下週。

劍未佩妥發表於2018-09-07

工作上遇到一個需求,對指定時間到達當前時間的‘’距離“改變其狀態。


把這需求做了出來,封裝好了,傳參就可以使用。

/*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));
		    }
		}  複製程式碼

這個功能感覺還是比較實用的,大家有用到可以拿去用,當然可能需要優化一下,還請大神們自己手動改一改。


相關文章