Задать вопрос
razrab228
@razrab228
зачем тебе знать это?

Как показать, сколько прошло с определенного времени/даты?

Допустим, есть дата:

2024-07-07T17:09:41Z


надо как-то отсчитать от этой даты время, по типу:
1 час назад

2 часа назад

15 минут назад

1 год назад

это несколько вариантов, как может быть. Если прошло больше 59 минут (больше часа), то надо показывать только часы. а если прошлом больше месяца, то показать только:
1 месяц назад

2 месяца назад

то-есть только определенный формат, "без уточнения" (часов, дней). ну это в зависимости от того, сколько прошло
  • Вопрос задан
  • 419 просмотров
Подписаться 6 Средний Комментировать
Решения вопроса 1
Elaryks
@Elaryks
Например, можно воспользоваться вариантом отсюда:
function timeAgo(input) {
    const date = (input instanceof Date) ? input : new Date(input);
    const formatter = new Intl.RelativeTimeFormat('ru');
    const ranges = {
        years: 3600 * 24 * 365,
        months: 3600 * 24 * 30,
        weeks: 3600 * 24 * 7,
        days: 3600 * 24,
        hours: 3600,
        minutes: 60,
        seconds: 1
    };
    const secondsElapsed = (date.getTime() - Date.now()) / 1000;

    for (let key in ranges) {
        if (ranges[key] < Math.abs(secondsElapsed)) {
            const delta = secondsElapsed / ranges[key];
            return formatter.format(Math.round(delta), key);
        }
    }
}


Либо можно использовать библиотеки: метод from из Day.js, javascript-time-ago или timeago.js.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Desert-Eagle
Новичок во всем
Звучит как задание
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы