Хотелось бы moment().fromNow()
функциональности, но когда дата близка, она слишком точна - напр. Я хочу, чтобы он отображался не «через 3 часа», а «сегодня» - так что в основном с «ежедневной» точностью.
Я пробовал использовать moment().calendar()
функцию, она не форматируется, если разница дат больше 1 дня
javascript
date
momentjs
Зиарно
источник
источник
new Date()
избежать предупреждения, которое библиотека продолжает выдавать мне (см. momentjs.com/docs/#/parsing/now )new Date()
требуется? Я думал,moment()
что в любом случае сгенерировал момент, используя сегодняшнюю датуВы можете настроить способ отображения дат как
.fromNow
в.calendar
методах , так и в методахmoment.updateLocale
. Следующий код изменит способ.calendar
отображения в соответствии с вопросом:Исходя из вопроса, кажется, что этот
.calendar
метод был бы более подходящим -.fromNow
хочет иметь префикс / суффикс прошлого / настоящего, но если вы хотите узнать больше, вы можете прочитать документацию на http://momentjs.com / документы / # / настройка / относительное время / .Чтобы использовать это только в одном месте вместо перезаписи языковых стандартов, передайте строку по вашему выбору в качестве первого аргумента, когда вы определяете,
moment.updateLocale
а затем вызываете метод календаря, используя этот языковой стандарт (например.moment.updateLocale('yesterday-today').calendar( /* moment() or whatever */ )
)РЕДАКТИРОВАТЬ: Moment ^ 2.12.0 теперь имеет
updateLocale
метод.updateLocale
иlocale
кажутся функционально такими же, иlocale
еще не устарел, но обновили ответ, чтобы использовать более новый метод.источник
Я использую комбинацию
add()
иendOf()
с моментомисточник
Требования:
moment().fromNow()
функционал."today"
,"yesterday"
,"tomorrow"
и т.д.Решение:
NB. Начиная с версии 2.14.0, аргумент форматов функции календаря может быть обратным вызовом, см. Http://momentjs.com/docs/#/displaying/calendar-time/ .
источник
Вы можете использовать это:
источник
У меня есть аналогичное решение, но позволяет использовать локали:
источник
Начиная с версии 2.10.5, момент поддерживает указание форматов вывода календаря для каждого вызова. Более подробную информацию можно найти в документации Moment - Calendar .
Начиная с версии 2.14.0, календарь также может выполнять обратный вызов для возврата значений.
источник
В Moment.js метод from () имеет ежедневную точность, которую вы ищете:
источник
from
действительно не имеет ежедневной точности. Например, если вчера было четыре часа назад, и я выбрал время, которое было пять часов назад, вместо вчера будет сказано «5 часов назад». Это решение не имеет ничего общего с точностьюfrom
, но с указанными датами.Так вот что я в итоге сделал
источник
Вы можете использовать методы .add () и .subtract (), чтобы получить дату вчера и завтра. Затем используйте метод форматирования, чтобы получить только дату .format ("D / M / Y"), D означает день, M - месяц, Y - год. Проверить в Moment Docs
Результат будет:
источник
Вот как я это делаю, используя момент :
источник
источник