向Angular日期过滤器添加新格式?

时间:2016-08-03 22:46:37

标签: javascript angularjs datefilter

是否可以在Angular日期过滤器中注入新的速记格式?

例如,我目前可以这样做:{{ myScope.timestamp | date: 'shortDate' }}

我想做的是:{{ myScope.timestamp | date: 'paddedShortDate' }},它会强制使用前导0填充一位数的日期部分。

我意识到我可以为我创建自己的过滤器 - 如果现有过滤器以任何方式扩展,我会更好奇。

1 个答案:

答案 0 :(得分:2)

查看源代码here,从DATE_FORMATS获取$locale。虽然我不建议编辑这些(因为$locale.DATE_FORMATS是私有API,并且将来可能会更改),但您应该可以通过运行块来执行此操作:

app.run(['$locale', function($locale) {
    $locale.DATETIME_FORMATS.paddedShortDate = 'MM/dd/yy';
}]);

正如您所提到的,您不想创建另一个过滤器,但在我看来,这是更好的方法。一个简单的过滤器应该可以正常工作:

var MY_DATETIME_FILTERS = {
    'paddedShortDate': 'MM/dd/yy'
};

app.filter('myFormat', ['$filter', function($filter) {
    return function(format) {
        return $filter('date')(input, MY_DATETIME_FILTERS[format] || format);
    }
}]);