工作上遇到一個需求,對指定時間到達當前時間的‘’距離“改變其狀態。
把這需求做了出來,封裝好了,傳參就可以使用。
/*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));
}
} 複製程式碼
這個功能感覺還是比較實用的,大家有用到可以拿去用,當然可能需要優化一下,還請大神們自己手動改一改。