Как настроить формат столбцов даты в AG-Grid? Когда я смотрю на образцы, я вижу даты в форматах dd/mm/yyyy, но мои столбцы даты всегда отображаются в довольно длинном формате, который выглядит так: "Сб 12 мая 2012 01:00:00 GMT + 0100 (BST)". Я бы хотел, чтобы формат YYYY-MM-dd по умолчанию позволял пользователям самостоятельно настраивать их желаемый формат. Образцы, которые я нашел, показывают, как выполнять персонализированную фильтрацию с помощью компаратора и тому подобное, но по умолчанию все работает отлично для меня, за исключением того, как даты фактически отображаются.
Спасибо, Троя
Это для версии Angular2+. Если вы используете библиотеку моментов в вашем приложении. Тогда работа действительно проста
В вашем файле .ts:
import * as moment from 'moment';
{
headerName: 'End Date',
field: 'endDateUTC',
minWidth: 80,
maxWidth: 100,
valueFormatter: function (params) {
return moment(params.value).format('yyyy-MM-dd');
},
},
И результат, который вы получите:
Дата окончания: 2019-10-05
Также для возможности настройки формата даты для пользователей: Вы можете добавить раскрывающийся список в приложении, чтобы они могли выбрать свой стиль даты и использовать вышеуказанный valueFormatter, и динамически передавать функцию со многими форматами даты, доступными из библиотеки моментов.
Надеюсь, это будет полезно для кого-то.
Хотя обработчик ячеек и форматирование значений будут работать, я бы использовал valueGetter для столбца что-то вроде этого -
headerName: "Issue Date",
valueGetter: function dateValueGettter(params) {
var date = $filter("date")(params.getValue("issueDate"), 'yyyy-MM-dd');
return date;
}
В приведенном выше примере используется фильтр угловой даты.
Преимущество использования метода getter заключается в том, что сортировка и фильтрация в таком столбце теперь могут основываться на значениях, возвращаемых значением getter.
Для этого я создаю средство визуализации ячеек:
cellRendererFormattedDate = params => {
var date = $filter("date")(params.value, 'yyyy-MM-dd h:mm:ss a');
return '<div style="text-align:right;">${date}</div>';
}
Убедитесь, что в вашем контроллере введен фильтр $.
В вашем столбцеDefs обязательно укажите cellRenderer: cellRendererFormattedDate
Лучшим способом для этого было бы использовать форматтер
https://www.ag-grid.com/javascript-grid-value-getters/
Надеюсь это поможет