Można dostosować sposób wyświetlania dat dla metod .fromNow
i .calendar
przy użyciu moment.updateLocale
. Poniższy kod zmieni sposób, że .calendar
wyświetla jak na pytanie:
moment.updateLocale('en', {
calendar : {
lastDay : '[Yesterday]',
sameDay : '[Today]',
nextDay : '[Tomorrow]',
lastWeek : '[Last] dddd',
nextWeek : '[Next] dddd',
sameElse : 'L'
}
});
Bazując na pytanie, wydaje się metodą .calendar
byłaby bardziej odpowiednia - .fromNow
chce mieć przeszłość/teraźniejszość prefiksu/sufiksu , ale jeśli chcesz dowiedzieć się więcej, możesz przeczytać dokumentację pod numerem http://momentjs.com/docs/#/customization/relative-time/.
Aby to wykorzystać tylko w jednym miejscu zamiast nadpisywania lokalizacje, przekaż ciąg wyboru jako pierwszy argument podczas definiowania moment.updateLocale
a następnie wywołać metodę kalendarza przy użyciu tego ustawienia regionalne (np. moment.updateLocale('yesterday-today').calendar(/* moment() or whatever */)
)
EDYCJA: Moment^2.12.0 ma teraz metodę updateLocale
. updateLocale
i locale
wydają się być funkcjonalnie takie same, a locale
nie jest jeszcze przestarzałe, ale zaktualizował odpowiedź, aby użyć nowszej metody.
dziękuję, ale nadal nie wyświetla "dzisiaj" i wyświetla np. "1 dzień temu" zamiast "wczoraj" - wygląda na to, że potrzebna mi funkcja musi być niestandardowa. – Ziarno
'Z' nie ma tak naprawdę codziennej precyzji. Na przykład, jeśli wczoraj było cztery godziny temu, a wybieram czas, który był pięć godzin temu, powie "5 godzin temu" zamiast wczoraj. To rozwiązanie nie ma nic wspólnego z precyzją "z", ale z terminów przekazywanych. –