最近做项目,有个需求是计算过去了多少天、小时、分、秒。
这里有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);
网友评论