美文网首页前端学习思考
js计算过去了多少分、秒、小时、天

js计算过去了多少分、秒、小时、天

作者: 宝妞儿 | 来源:发表于2019-12-27 13:31 被阅读0次

最近做项目,有个需求是计算过去了多少天、小时、分、秒。

这里有2种判断方法(第一种是网上借鉴过来的,忘了出处,第二种是朋友的想法)

很懊恼!!。。自己都没想出来这些好的想法...js还是弱的不行..

在此记录谨记一下!

  • 第一种:(值都大于对应的上限时,也是循环进行判断)
/*
  @time(number): 时间值,单位s
  @return string: 表示过去了多少分、秒、小时、天 
*/
function formateTime(time) {
  let day = '';
  let hour = '';
  let minute = '';
  let  seconds = '';
  
  if(time > 60){ //大于60s,即变成分钟+秒,
    minute = Math.floor(time/60);
    seconds = Math.floor(time % 60);
   if(minute > 60) { //大于60min,即变成小时+分钟... 由于255min
     hour = Math.floor(minute/60);
     minute =  Math.floor(minute%60);
   }
   if(hour > 24) { //大于24h,即变成天+小时...
     day = Math.floor(hour/24);
     hour = Math.floor(hour%24); 
   }
 }else {
  seconds = time;
}

let result = "";

if(seconds > 0) {
  result = `${seconds}秒`;
}
if(minute>0) {
  result = `${minute}分钟` + result;
}

if(hour > 0) {
 result = `${hour}小时` + result;
}

if(day > 0) {
 result = `${day}天` + result;
}
return result;
}

比如当time = 15350时,

进第一个分支,此时 minute = 15350/60 = 255min, seconds = 15350%60 = 50(秒)
此时255 min 大于60,进入第二个分支, 此时hour = 255/60 = 4, minute = 15(分钟)
第三个分支,hour > 60不满足,退出

再走下面的输出最终结果的逻辑,即 输出: 4小时15分50s

  • 第二种:(值小于对应的上限时,递归进行判断)
/*
  @time(number): 时间值,单位s
  @return string: 表示过去了多少分、秒、小时、天 
*/
function formateTime(time) {
 let remainTime = 0; //剩余的时间

  if(time < 60) {
     return `${time}秒`
  } 

let minute = Math.floor(time / 60);
remainTime = time - minute * 60;
if(minute <60) {
     return `${minute}分` + formate(remainTime);
 }
}

let hour =  Math.floor(time / 3600);
remainTime = time - hour * 3600;
if(hour < 24) {
   return `${hour}小时` + formate(remainTime);
 }

let day =  Math.floor(time/3600/24);
remainTime = time - day * 3600 * 24;
return `${day}天` + formate(remainTime);

相关文章

网友评论

    本文标题:js计算过去了多少分、秒、小时、天

    本文链接:https://www.haomeiwen.com/subject/tsaroctx.html