Я пытаюсь взять строку в форме '018-09-06T15: 06: 44.091Z', а затем вычесть из нее Date.now () и затем преобразовать ее в дни, часы, минуты или секунды Строка назад Например, я получаю строку выше, а затем: var date = Date.now() - new Date('018-09-06T15:06:44.091Z')
. Это дает мне номер: 697850577
. Мне нужно преобразовать это число в строку, которая читает '3 days ago'
или '30 seconds ago'
, основываясь на том, сколько времени прошло с '018-09-06T15:06:44.091Z'
. Я не могу использовать moment.js
или любые другие библиотеки. Я могу использовать только Angular.JS 1.7 и / или vanilla JS.
Текущая реализация работает, но должен быть лучший способ, чем этот:
function conversions() {
notif.rollupList.rollups.forEach(function (rollup) {
rollup.type = getChangeType(rollup.type);
rollup.modifiedAt = convertDate(rollup.modifiedAt)
})
}
// Converts the date to 'something something ago'
function convertDate(dateString) {
var seconds = Math.floor((Date.now() - new Date(dateString)) /
1000);
if (seconds >= 60) {
var minutes = Math.floor(seconds / 60);
if (minutes >= 60) {
var hours = Math.floor(minutes / 60);
if (hours >= 24) {
var days = Math.floor(hours / 24);
if (days > 1) {
return days.toString() + ' days ago'
} else {
return days.toString() + ' day ago'
}
} else {
if (hours > 1) {
return hours.toString() + ' hours ago'
} else {
return hours.toString() + ' hour ago'
}
}
} else {
if (minutes > 1) {
return minutes.toString() + ' minutes ago'
} else {
return minutes.toString() + ' minute ago'
}
}
} else {
if (second > 1) {
return seconds.toString() + ' seconds ago'
} else {
return seconds.toString() + ' second ago'
}
}
}
Заранее спасибо за любую помощь.