这是一个常见的问题,但我不知道如何解决它。下面的代码可以正常工作。

var mind = time % (60 * 60);
var minutes = Math.floor(mind / 60);
         
var secd = mind % 60;
var seconds = Math.ceil(secd);

然而,当我到达1小时或3600秒时,它返回0分和0秒。我如何避免这种情况,让它返回所有的分钟?


当前回答

我更喜欢将Millisecond视为自己的单元,而不是其他东西的子单元。从这个意义上说,它的值是0-999,所以你会想要填充3而不是2,就像我在其他答案中看到的那样。下面是一个实现:

函数格式(n) { 让mil_s =字符串(n % 1000)。padStart (3 ' 0 '); n =数学。Trunc (n / 1000); let sec_s =字符串(n % 60)。padStart (2, ' 0 '); n =数学。Trunc (n / 60); 返回String(n) + ' m ' + sec_s + ' s' + mil_s + ' ms'; } console.log(格式(241));

https://developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/String/padStart

其他回答

1 -得到剩余的除法使用%。现在你有了一分钟还不够完整的几秒钟 2 -从总数中减去步骤1中获得的秒数。现在你有会议记录

例如,让我们假设你有700秒:

seconds = 700%60); //40 seconds
minutes = (700 - (700%60))/60; //11
//11:40

对于加0,我真的不认为需要有一个完整的其他函数,你可以简单地使用例如

var mins=Math.floor(StrTime/60);
var secs=StrTime-mins * 60;
var hrs=Math.floor(StrTime / 3600);
RoundTime.innerHTML=(hrs>9?hrs:"0"+hrs) + ":" + (mins>9?mins:"0"+mins) + ":" + (secs>9?secs:"0"+secs);

这就是为什么我们有条件语句的原因。

(条件?如果instance seconds大于9,则只显示seconds否则在它前面添加字符串0。

您已经编写了足够多的代码来跟踪时间的分钟和秒部分。

你可以把时间因素加进去:

var hrd = time % (60 * 60 * 60);
var hours = Math.floor(hrd / 60);

var mind = hrd % 60;
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

var moreminutes = minutes + hours * 60
export function TrainingTime(props) {
    const {train_time } = props;
    const hours = Math.floor(train_time/3600);
    const minutes = Math.floor((train_time-hours * 3600) / 60);
    const seconds = Math.floor((train_time%60));

    return `${hours} hrs  ${minutes} min  ${seconds} sec`;
}

2020年更新

使用基本的数学和简单的javascript,这可以在几行代码中完成。

将7735秒转换为HH:MM:SS。


数学:

计算使用:

Math.floor() - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor

Math.floor()函数的作用是:返回小于或等于给定数字的最大整数。

%算术运算符(余数)- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder

余数操作符返回一个操作数除第二个操作数时的余数。它总是带红利的符号。

查看下面的代码。秒除以3600得到小时数和余数,余数用于计算分数和秒数。

HOURS => 7735 / 3600 = 2余535

MINUTES => 535 / 60 = 8余55

秒=> 55


前导零:

这里的许多答案使用复杂的方法来正确地显示小时、分钟和秒数,前导0 - 45、04等。这可以使用padStart()来完成。这适用于字符串,因此必须使用toString()将数字转换为字符串。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

padStart()方法用另一个字符串填充当前字符串(如果需要多次),直到生成的字符串达到给定的长度。填充从当前字符串的开始处应用。


代码:

function secondsToTime(e){ const h = Math.floor(e / 3600).toString().padStart(2,'0'), m = Math.floor(e % 3600 / 60).toString().padStart(2,'0'), s = Math.floor(e % 60).toString().padStart(2,'0'); return h + ':' + m + ':' + s; //return `${h}:${m}:${s}`; } console.log(secondsToTime(7735)); // 02:08:55 /* secondsToTime(SECONDS) // HH:MM:SS secondsToTime(8) // 00:00:08 secondsToTime(68) // 00:01:08 secondsToTime(1768) // 00:29:28 secondsToTime(3600) // 01:00:00 secondsToTime(5296) // 01:28:16 secondsToTime(7735) // 02:08:55 secondsToTime(45296) // 12:34:56 secondsToTime(145296) // 40:21:36 secondsToTime(1145296) // 318:08:16 */