Нужно вывести дату в удобном формате. С бекенда прилетает дата, когда человек оставил комментарий. Нужно выводить в следующем формате -
1. Если входящее время > 6 месяцев от текущего: выводим 12.01.2020 - без часов, минут и секунд
2. Если входящее время > месяца и меньше 6 месяцев от текущего: выводим Н месяцев назад
3. Если входящее время > 24 часов и меньше месяца от текущего: выводим Н дней назад
4. Если входящее время < 24 часам от текущего: выводим Н часов назад
5. Если входящее время < 60 минут от текущего: выводим Н минут назад
6. Если входящее время < 60 секунд от текущего: выводим Н секунд назад
Сделал пока так:
export default class DateUtils {
static getHumanDate(date) {
try {
const month = moment(date).format('MM'); // месяц входящей даты
const currentMonth = moment().format('MM'); // текущий месяц
const currentYear = moment().format('YYYY'); // текущий год
if (
currentYear - moment(date).format('YYYY') < 1 &&
currentMonth - month < 6
) {
return moment(date, 'YYYYMMDD').fromNow();
}
return moment(date).format('DD.MM.YYYY');
} catch (e) {
console.log(e); // todo: notify?
}
return null;
}
}
Для тестов в компоненте передаю дату:
calculateDate(date) {
console.log(DateUtils.getHumanDate('2022-02-01'));
},
Сейчас корректно отображается только Если входящее время > 6 месяцев от текущего и Если входящее время > 24 часов и меньше месяца. Как дописать остальные условия не понимаю.