88 lines
1.6 KiB
JavaScript
88 lines
1.6 KiB
JavaScript
'use strict'
|
|
|
|
function toString () {
|
|
const microseconds = this.microseconds
|
|
const milliseconds = this.milliseconds
|
|
const seconds = this.seconds
|
|
const minutes = this.minutes
|
|
const hours = this.hours
|
|
const days = this.days
|
|
|
|
const parts = [
|
|
{
|
|
name: 'day',
|
|
value: days
|
|
},
|
|
{
|
|
name: 'hour',
|
|
value: hours
|
|
},
|
|
{
|
|
name: 'minute',
|
|
value: minutes
|
|
},
|
|
{
|
|
name: 'second',
|
|
value: seconds
|
|
},
|
|
{
|
|
name: 'millisecond',
|
|
value: milliseconds
|
|
},
|
|
{
|
|
name: 'microsecond',
|
|
value: microseconds
|
|
}
|
|
]
|
|
|
|
const time = []
|
|
|
|
for (let i = 0; i < parts.length; i++) {
|
|
const part = parts[i]
|
|
if (part.value === 0) {
|
|
if (!time.length) continue // nothing was added yet
|
|
|
|
let broken = false
|
|
|
|
for (let j = i; j < parts.length; j++) {
|
|
const p = parts[j]
|
|
if (p.value) {
|
|
broken = true
|
|
break
|
|
}
|
|
}
|
|
|
|
if (!broken) break
|
|
}
|
|
|
|
time.push(part.value, part.value === 1 ? part.name : part.name + 's')
|
|
}
|
|
|
|
return time.join(' ')
|
|
}
|
|
|
|
module.exports = (nano) => {
|
|
const ms = nano / 1000
|
|
const ss = ms / 1000
|
|
const mm = ss / 60
|
|
const hh = mm / 60
|
|
const dd = hh / 24
|
|
|
|
const microseconds = Math.round((ms % 1) * 1000)
|
|
const milliseconds = Math.floor(ms % 1000)
|
|
const seconds = Math.floor(ss % 60)
|
|
const minutes = Math.floor(mm % 60)
|
|
const hours = Math.floor(hh % 24)
|
|
const days = Math.floor(dd)
|
|
|
|
return {
|
|
microseconds,
|
|
milliseconds,
|
|
seconds,
|
|
minutes,
|
|
hours,
|
|
days,
|
|
toString
|
|
}
|
|
}
|