Fix duration formatting, add days and don't show 60 seconds

This commit is contained in:
Deluan
2020-12-20 13:29:09 -05:00
parent ea2f94658a
commit 1804fb3e50
2 changed files with 15 additions and 6 deletions
+7 -4
View File
@@ -11,12 +11,15 @@ export const formatBytes = (bytes, decimals = 2) => {
} }
export const formatDuration = (d) => { export const formatDuration = (d) => {
const hours = Math.floor(d / 3600) const days = Math.floor(d / 86400)
const hours = Math.floor(d / 3600) % 24
const minutes = Math.floor(d / 60) % 60 const minutes = Math.floor(d / 60) % 60
const seconds = d % 60 const seconds = Math.floor(d % 60)
return [hours, minutes, seconds] const f = [hours, minutes, seconds]
.map((v) => Math.round(v).toString()) .map((v) => v.toString())
.map((v) => (v.length !== 2 ? '0' + v : v)) .map((v) => (v.length !== 2 ? '0' + v : v))
.filter((v, i) => v !== '00' || i > 0) .filter((v, i) => v !== '00' || i > 0)
.join(':') .join(':')
return `${days > 0 ? days + ':' : ''}${f}`
} }
+8 -2
View File
@@ -18,10 +18,16 @@ const hour = 3600
const minute = 60 const minute = 60
describe('formatDuration', () => { describe('formatDuration', () => {
it('format seconds', () => { it('formats seconds', () => {
expect(formatDuration(0)).toEqual('00:00') expect(formatDuration(0)).toEqual('00:00')
expect(formatDuration(59)).toEqual('00:59') expect(formatDuration(59)).toEqual('00:59')
expect(formatDuration(59.99)).toEqual('00:59')
})
it('formats days, hours and minutes', () => {
expect(formatDuration(hour + minute + 1)).toEqual('01:01:01') expect(formatDuration(hour + minute + 1)).toEqual('01:01:01')
expect(formatDuration(2 * day + 3 * hour + 7 * minute)).toEqual('51:07:00') expect(formatDuration(3 * day + 3 * hour + 7 * minute)).toEqual(
'3:03:07:00'
)
}) })
}) })