Обновление календаря Moment.js - PullRequest
0 голосов
/ 09 мая 2018

Как и многие до меня (особенно здесь ), я пытаюсь отобразить относительное время без даты, используя moment.calendar. Тем не менее, я не могу получить ответ, чтобы работать на меня.

var today = moment(new Date()).startOf('Day');
today.calendar();
// Displays Today at 12:00 AM

  moment.updateLocale(null, {
    calendar : {
        lastDay : '[Yesterday]',
        sameDay : '[Today] With just the date?',
        nextDay : '[Tomorrow]',
        lastWeek : 'll',
        nextWeek : 'll',
        sameElse : 'll'
    }
    });

today.calendar();
// Displays Today at 12:00 AM

Я ожидаю, что на нем будет отображаться «Сегодня только с датой?».

Вот моя попытка Скрипка (основанная на другом отличном моменте: Скрипка пример - кредит, причитающийся кредит)

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вам нужно будет указать имя локали для обновления, а после обновления создать объект момента.

Кроме того, With just the date? не является допустимым спецификатором формата для MomentJS. Если вам нужно показать это, вам нужно заключить его в []. Тем не менее, вы можете использовать его, чтобы увидеть некоторую перемешанную строку на консоли:

moment.updateLocale('en', {
  calendar: {
    lastDay: '[Yesterday]',
    sameDay: '[Today] With just the date?',
    nextDay: '[Tomorrow]',
    lastWeek: 'll',
    nextWeek: 'll',
    sameElse: 'll'
  }
});

var today = moment(new Date()).startOf('Day');
console.log(today.calendar());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
0 голосов
/ 09 мая 2018

Вы можете использовать updateLocale, передавая 'en' в качестве первого параметра (начиная с По умолчанию Moment.js поставляется с английскими (США) языковыми строками ).Кроме того, вы должны создать новый объект момента, чтобы увидеть обновленные строки календаря:

var today = moment(new Date()).startOf('Day');
console.log(today.calendar()); // Displays Today at 12:00 AM

moment.updateLocale('en', {
    calendar : {
        lastDay : '[Yesterday]',
        sameDay : '[Today] [With just the date?]',
        nextDay : '[Tomorrow]',
        lastWeek : 'll',
        nextWeek : 'll',
        sameElse : 'll'
    }
});

moment.updateLocale('fr', {
    calendar : {
        lastDay : '[Hier]',
        sameDay : '[Aujourd’hui] L',
        nextDay : '[Demain]',
        lastWeek : 'll',
        nextWeek : 'll',
        sameElse : 'll'
    }
});
var today2 = moment().startOf('day');
console.log(today2.locale('en').calendar());
console.log(today2.locale('fr').calendar());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment-with-locales.min.js"></script>

Используйте sameDay : '[Today] L', если вы хотите текущую дату, вместо строки "With just the date?".

...