将时差格式化为带有日期 fns 的 `mm:ss`
Formatting time difference as `mm:ss` with date fns
我目前正在使用 https://date-fns.org/v2.21.1/docs/differenceInSeconds 以秒为单位格式化 2 个日期之间的距离,但如果这样的距离大于 1 分钟,则会出现各种结果,例如 67
秒。
为了让用户更友好,我想将这个距离格式化为 mm:ss
所以
00:59
01:00
02:34
等等。目前我最接近的是使用 differenceInSeconds
和 differenceInMinutes
并将 2 连接成一个字符串,如 ${differenceInMinutes}:${differenceInSeconds}
问题是,2 分钟后我得到的结果如 02:120
您需要使用模 (%
) 运算符,它 returns 除法的余数。
我还使用 padStart
函数在最终字符串中显示前导零。
作为参数,您只需要使用秒数的差异,
这是一个代码片段:
function formatTime(time) {
// Remainder of division by 60
var seconds = time % 60;
// Divide by 60 and floor the result (get the nearest lower integer)
var minutes = Math.floor(time / 60);
// Put it all in one string
return ("" + minutes).padStart(2, "0") + ":" + ("" + seconds).padStart(2, "0");
}
console.log(formatTime(15))
console.log(formatTime(65))
console.log(formatTime(123))
我目前正在使用 https://date-fns.org/v2.21.1/docs/differenceInSeconds 以秒为单位格式化 2 个日期之间的距离,但如果这样的距离大于 1 分钟,则会出现各种结果,例如 67
秒。
为了让用户更友好,我想将这个距离格式化为 mm:ss
所以
00:59
01:00
02:34
等等。目前我最接近的是使用 differenceInSeconds
和 differenceInMinutes
并将 2 连接成一个字符串,如 ${differenceInMinutes}:${differenceInSeconds}
问题是,2 分钟后我得到的结果如 02:120
您需要使用模 (%
) 运算符,它 returns 除法的余数。
我还使用 padStart
函数在最终字符串中显示前导零。
作为参数,您只需要使用秒数的差异,
这是一个代码片段:
function formatTime(time) {
// Remainder of division by 60
var seconds = time % 60;
// Divide by 60 and floor the result (get the nearest lower integer)
var minutes = Math.floor(time / 60);
// Put it all in one string
return ("" + minutes).padStart(2, "0") + ":" + ("" + seconds).padStart(2, "0");
}
console.log(formatTime(15))
console.log(formatTime(65))
console.log(formatTime(123))