yyyy personalizados parse filtros filtro fechas busqueda angularjs angularjs-filter

parse - filtros personalizados en angularjs



¿Establecer un formato de filtro de fecha AngularJS para ser utilizado por todas las referencias al filtro de fecha? (5)

En lugar de tener que definir un formato personalizado para cada llamada al filtro de date , ¿hay una manera de definir globalmente un formato predeterminado (que no sea ''medium'' )?

Me gustaría tener el formato configurado en un archivo en lugar de en todo el lugar de mi código (el formato de la fecha puede cambiarse en el futuro y una modificación en un archivo sería mucho mejor que tener que realizar cambios en muchos archivos) ).

Esto es lo que estoy haciendo ahora (definiendo el formato de fecha cada vez):

{{systemTime | date:''dd MMMM @ HH:mm:ss''}} {{modifiedTime | date:''dd MMMM @ HH:mm:ss''}} {{getShippedTime() | date:''dd MMMM @ HH:mm:ss''}} etc.

Estaba pensando en crear un filtro personalizado (llamémoslo myDate ), que actuaría como un contenedor y luego pasaría la cadena de date filtro de date Angular con mi formato personalizado, por lo que mi código podría tener este aspecto:

{{systemTime | myDate}} {{modifiedTime | myDate}} {{getShippedTime() | myDate}} etc.

Sin embargo, no puedo averiguar cómo hacer que el filtro myDate apunte al filtro de date angular.

Gracias por tu ayuda.


Usa un decorador,

No es lo que pediste explícitamente, usa un decorator . está construido en angular y diseñado para parchear services , directives , filters , etc.

en su caso, si no se proporciona el filtro de fecha, debe usar su formato de fecha personalizado.

app.config(function ($provide) { $provide.decorator(''dateFilter'', function ($delegate) { return function () { // Check if the date format argument is not provided if (!arguments[1]) { arguments[1] = ''dd MMMM @ HH:mm:ss''; } var value = $delegate.apply(null, arguments); return value; }; }) });


Basándome en un poco más de investigación y luego considerando el comentario de moderndegree, he encontrado que el siguiente filtro myDate funcionará:

.filter(''myDate'', function($filter) { var angularDateFilter = $filter(''date''); return function(theDate) { return angularDateFilter(theDate, ''dd MMMM @ HH:mm:ss''); } });



En caso de que esté trabajando con páginas .aspx y tenga el formato de fecha almacenado en un archivo de configuración ...

  1. Desde el archivo .aspx que inyecta su página Angular, establezca una variable global con el formato de fecha web.config

    var _settingsDateFormat = ''<% = appSettings.DateFormat%>'';

  2. Configura un filtro global para usar a través de tu aplicación

yourModule.filter(''myDateFormat'', function ($filter) { return function (input) { if (input == null) { return ""; } var formattedDate = $filter(''date'')(new Date(input), _settingsDateFormat); return formattedDate; }; });

  1. Solo agrega el filtro personalizado a tus fechas

Effective {{row.StartDate|myDateFormat}} - {{row.StopDate|myDateFormat}}


Prueba esto

angular.module(''yourmodule'').filter(''myDate'', function($filter) { return function(input) { if(input == null){ return ""; } var _date = $filter(''date'')(new Date(input), ''dd MMMM @ HH:mm:ss''); return _date.toUpperCase(); }; });

Html

{{systemTime | myDate}}

angulartutorial.blogspot.in/2014/04/…