Chciałbym moment().fromNow()
funkcjonalność, ale kiedy zbliża się termin, jest zbyt precyzyjny - np. Nie chcę, żeby wyświetlało się „za 3 godziny”, ale „dzisiaj” - czyli w zasadzie z „codzienną” precyzją.
Próbowałem użyć tej moment().calendar()
funkcji, nie formatuje, jeśli różnica dat jest większa niż 1 dzień
javascript
date
momentjs
Ziarno
źródło
źródło
new Date()
uniknięcie ostrzeżenia, które wyświetla mi biblioteka (patrz momentjs.com/docs/#/parsing/now )new Date()
wymagane? Pomyślałem, że i takmoment()
wygenerowałem moment przy użyciu dzisiejszej datyMożesz dostosować sposób, w jaki obie metody
.fromNow
i.calendar
metody wyświetlają daty przy użyciumoment.updateLocale
. Poniższy kod zmieni sposób.calendar
wyświetlania zgodnie z pytaniem:Na podstawie pytania wydaje się, że
.calendar
metoda byłaby bardziej odpowiednia -.fromNow
chce mieć poprzedni / obecny prefiks / sufiks, ale jeśli chcesz dowiedzieć się więcej, możesz przeczytać dokumentację na http://momentjs.com / docs / # / customization / względny czas / .Aby użyć tego tylko w jednym miejscu, zamiast nadpisywać ustawienia regionalne, przekaż wybrany przez siebie ciąg jako pierwszy argument podczas definiowania,
moment.updateLocale
a następnie wywołaj metodę kalendarza przy użyciu tych ustawień regionalnych (np.moment.updateLocale('yesterday-today').calendar( /* moment() or whatever */ )
)EDYCJA: Moment ^ 2.12.0 ma teraz
updateLocale
metodę.updateLocale
ilocale
wydają się funkcjonalnie takie same ilocale
nie są jeszcze przestarzałe, ale zaktualizowałem odpowiedź, aby używać nowszej metody.źródło
Używam kombinacji
add()
iendOf()
chwiliźródło
Wymagania:
moment().fromNow()
funkcjonalności."today"
,"yesterday"
,"tomorrow"
, itd.Rozwiązanie:
NB: Od wersji 2.14.0 argument formatów funkcji kalendarza może być wywołaniem zwrotnym, patrz http://momentjs.com/docs/#/displaying/calendar-time/ .
źródło
Możesz użyć tego:
źródło
Mam podobne rozwiązanie, ale pozwala na użycie lokalizacji:
źródło
Od 2.10.5 moment obsługuje określanie formatów wyjściowych kalendarza na wywołanie. Aby uzyskać bardziej szczegółową dokumentację, sprawdź Moment - Kalendarz .
Od 2.14.0 kalendarz może również przyjmować wywołanie zwrotne w celu zwrócenia wartości.
źródło
W Moment.js metoda from () ma codzienną precyzję, której szukasz:
źródło
from
tak naprawdę nie ma codziennej precyzji. Na przykład, jeśli wczoraj było cztery godziny temu i wybiorę godzinę sprzed pięciu godzin, zamiast wczoraj zostanie wyświetlone „5 godzin temu”. To rozwiązanie nie ma nic wspólnego z precyzjąfrom
, ale zWięc to właśnie zrobiłem
źródło
Możesz użyć metod .add () i .subtract (), aby uzyskać datę wczorajszą i jutrzejszą. Następnie użyj metody formatowania, aby uzyskać tylko format daty („D / M / R”), D oznacza dzień, M - miesiąc, Y - rok. Sprawdź w Moment Docs
Wynik będzie:
źródło
Oto jak to robię za pomocą momentu :
źródło
źródło