Create formatDuration.md
This commit is contained in:
25
snippets/formatDuration.md
Normal file
25
snippets/formatDuration.md
Normal file
@ -0,0 +1,25 @@
|
||||
###formatDuration
|
||||
|
||||
Returns the human readable format of the given number of milliseconds. If milliseconds is equal to `0` return `'now'` .
|
||||
|
||||
``` js
|
||||
const formatDuration = milliseconds => {
|
||||
if(milliseconds === 0) return 'now'
|
||||
if(milliseconds < 0) milliseconds = -milliseconds
|
||||
const join = (arr, separator = ',', end = separator) =>
|
||||
arr.reduce(
|
||||
(acc, val, i) =>
|
||||
i == arr.length - 2
|
||||
? acc + val + end
|
||||
: i == arr.length - 1 ? acc + val : acc + val + separator,
|
||||
''
|
||||
);
|
||||
const pluralize = (num, word, plural = word + 's') =>
|
||||
Number(num) === 1 ? word : plural;
|
||||
let date = new Date(milliseconds)
|
||||
let array = [date.getUTCMilliseconds(),date.getUTCSeconds(),date.getUTCMinutes(),date.getUTCHours(),date.getUTCDate()-1,date.getUTCMonth(),date.getUTCFullYear()-1970]
|
||||
let time = ["millisecond","second","minute","hour","day","month","year"]
|
||||
array = array.map((el,i) => [el,time[i]]).filter(el => el[0] !== 0).map(el => [el[0],pluralize(el[0],el[1])]).map(el => el[0] + ' ' + el[1])
|
||||
return join(array.reverse(),', ',' and ')
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user