Дата, отличная от сегодняшнего и вчерашнего дня, не отображается правильно с moment.calendar

Я использую moment.js и имею приведенный ниже код в angularJS, который отображает даты. Если дата сегодня и вчера, это работает хорошо. Например: если сегодняшняя дата — 06.02.2015, она правильно отображается как «Сегодня», а 05.02.2015 — как «Вчера». Но если дата 04.02.2015, она отображается как 2015-02-04T11:20:00-06:00, а не так, как я хочу. Если дата 28.01.2015, она форматируется правильно, как указано в sameElse. Я думал, что тот же Else должен был позаботиться о днях, которые не сегодня, а вчера. Я получаю дату с сервера в формате utc. Пример: 05.02.2015 18:01:04:946

Что мне не хватает?

Вот код:

контроллер:

$scope.calDate = function(val) {
    var d_val = moment(val + ' +0000','MM/DD/YYYY HH:mm:ss:SSS Z').format('LLL');
    moment.locale('en', {
        'calendar' : {
            lastDay : '[Yesterday]',
            sameDay : '[Today]',
            sameElse : 'MMM D, YYYY'
       }
    });
    return moment(new Date(d_val)).calendar();
}

HTML:

<div>{{calDate(list.dateVal)}}</div>

person Mustang    schedule 06.02.2015    source источник


Ответы (1)


Ты можешь попробовать

 moment.locale('en', longDateFormat : {
        LT : 'MMM D YYYY'
    },
  'calendar' : {
            lastDay : '[Yesterday]',
            sameDay : '[Today]',
            sameElse : 'LT'
       }
    });
person squiroid    schedule 06.02.2015
comment
Я попробовал это. Но все даты отображаются как «Неверная дата». - person Mustang; 06.02.2015
comment
Неверная дата :-( .try 'LT' время по умолчанию для календаря - person squiroid; 06.02.2015
comment
Не повезло. Все еще дает мне неверную дату - person Mustang; 06.02.2015