工作上遇到一个需求,对指定时间到达当前时间的‘’距离“改变其状态。
把这需求做了出来,封装好了,传参就可以使用。
/*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));
}
}
这个功能感觉还是比较实用的,大家有用到可以拿去用,当然可能需要优化一下,还请大神们自己手动改一改。