Отображение времени в формате AM/PM с сеткой Angular

Как мне отформатировать сетку Angular, которая принимает объекты, у которых есть свойство date time, называемое startTime и endTime, для отображения времени в формате AM/PM? Сейчас я использую:

{ field: 'StartTime', displayName: 'Start Time', cellFilter: 'date:\'hh:mm tt\''},
{ field: 'EndTime', displayName: 'End Time', cellFilter: 'date:\'hh:mm tt\''},

и, очевидно, 'tt' показывается вместо AM или PM. Кто-нибудь делал AM/PM в Angular ngGrid раньше?

Ответ 1

Это просто, см. это:

{ field: 'createdOn', displayName: 'Created On', width: '180px', 
 cellTemplate: "<div class='ngCellText'>{{row.entity.createdOn | date:'MM/dd/yy h:mm:ss a'}}</div>" },

Что он

Подробнее о формате даты см. это

Ответ 2

Просто нужно было сбрить некоторые вещи вместе. Во-первых, фильтр:

app.filter('ampmtime',
    function () {
        return function (value) {
            if (!value) { return ''; }
            var hours = new Date(value).getHours();
            var minutes = new Date(value).getMinutes();
            var ampm = hours >= 12 ? 'PM' : 'AM';
            hours = hours % 12;
            hours = hours ? hours : 12; // the hour '0' should be '12'
            minutes = minutes < 10 ? '0' + minutes : minutes;
            var strTime = hours + ':' + minutes + ' ' + ampm;
            return strTime;
        }
    });

Затем вызов функции на gridOptions:

{ field: 'StartTime', displayName: 'Start Time', cellFilter: 'ampmtime'},
{field:'EndTime', displayName: 'End Time', cellFilter: 'ampmtime'}

И вы все настроены.

Ответ 3

Просто столкнулся с этой же проблемой и нашел более простое решение с использованием фильтра даты angular. Вам просто нужно изменить tt на a, вот так

{ field: 'StartTime', displayName: 'Start Time', cellFilter: 'date:\'hh:mm a\''}

см. angular refference для фильтра даты - https://docs.angularjs.org/api/ng/filter/date