| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import getFormatBasedOnCount from "./getFormatBasedOnCount"
- export default (formats, andFunctionWord, ms) => {
- if ( !Number.isInteger(ms) ) {
- return null
- }
-
- const allocate = msUnit => {
- const units = Math.trunc(ms / msUnit)
- ms -= units * msUnit
- return units
- }
-
- const units = {
- days: allocate(86400000),
- hours: allocate(3600000),
- minutes: allocate(60000),
- seconds: allocate(1000),
- ms // remainder
- }
- let result = [];
- if (units.days > 0) {
- result.push(`${units.days} ${getFormatBasedOnCount(formats.days, units.days)}`)
- }
- if (units.hours > 0) {
- result.push(`${units.hours} ${getFormatBasedOnCount(formats.hours, units.hours)}`)
- }
- if (units.minutes > 0) {
- result.push(`${units.minutes} ${getFormatBasedOnCount(formats.minutes, units.minutes)}`)
- }
- if (units.seconds > 0) {
- result.push(`${units.seconds} ${getFormatBasedOnCount(formats.seconds, units.seconds)}`)
- }
- const last = result.pop();
- return result.join(', ') + ` ${andFunctionWord} ` + last
- }
|