Как сформулировать относительное время ("несколько часов назад", "несколько месяцев назад" и т.д.) от указанной даты и времени (<blockquote>2024-07-07T17:09:41Z</blockquote>), учитывая различные варианты (часы, минуты, месяцы), описанные в примерах?
Для того чтобы узнать сколько времени прошло с определенного момента, необходимо вычесть указанный момент времени из текущего момента времени. Это можно сделать с помощью программирования или специальных онлайн калькуляторов времени. Относительное время ("несколько часов назад", "несколько месяцев назад" и т.д.) от указанной даты и времени <blockquote>2024-07-07T17:09:41Z</blockquote> можно сформулировать следующим образом: - Если прошло менее часа, то можно сказать "несколько минут назад". - Если прошло менее суток, то можно сказать "несколько часов назад". - Если прошло менее недели, то можно сказать "несколько дней назад". - Если прошло менее месяца, то можно сказать "несколько недель назад". - Если прошло менее года, то можно сказать "несколько месяцев назад". - Если прошло более года, то можно сказать "больше года назад". Это лишь общие примеры формулировок относительного времени, их можно изменять в зависимости от конкретной ситуации.
Например, можно воспользоваться вариантом отсюда :
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 .