#javascript #jquery #momentjs
#javascript #jquery #momentjs
Вопрос:
Я пытаюсь получить количество дней относительно текущего времени, возвращая только дни в единицах измерения. Итак, если что-то произошло неделю назад, это будет означать 7 дней. Если бы это произошло 2 месяца назад, это также вернуло бы это время в днях.
Я знаю, как этого добиться, но у меня возникают проблемы с соединением частей вместе.
У меня есть мои дни в качестве атрибута данных «data-order», поэтому data-order =»2019-4-2 00:00″ или «2019-4-2», если это упрощает вычисления.
$(".pop-cal").each(function (i, obj) {
moment.relativeTimeThreshold("m", 1);
moment.relativeTimeThreshold("d", 25 * 100);
var date = $(this).attr("data-order");
var momentDate = moment(date).fromNow();
$(this).attr("data-content", momentDate);
});
Это позволяет мне получать даты, но они всегда отключены.
Мои ожидаемые результаты были бы подтверждением, аналогичным использованию поиска Google и сообщению «58 дней назад» и получению вторника 12 февраля 2019 года.
В настоящее время я получаю в качестве результата «59 дней назад» на момент времени, созданный в «2019-2-12.
Ответ №1:
fromNow
Метод не подходит, если вам нужно точное количество дней, потому что он работает путем преобразования времени в длительность (измеряемую в месяцах и миллисекундах), а затем преобразования продолжительности в удобочитаемую форму (метод humanize).
Как указано в документах Duration:
Гораздо лучше использовать moment#diff для вычисления дней или лет между двумя моментами, чем использовать длительности.
Вы можете увидеть проблему, если вы выполняете fromNow
28 февраля и 1 марта с интервалом в 1 день, но с интервалом в fromNow
4 дня (из-за 28 дней в феврале вместо 31 дня).
moment("2019-03-01").fromNow() // "45 days ago"
moment("2019-02-28").fromNow() // "49 days ago"
Метод moment #diff может дать вам точную разницу между двумя моментами в днях, например, между моментами a
и b
:
a.diff(b, 'days')
Комментарии:
1. Я попробую сделать это таким образом, также обрабатывая относительные даты «x дней назад», «завтра», «вчера», «через x дней».
2. Это имеет смысл. Я только что добавил немного информации, почему fromNow работает плохо