我将json对象数组绑定到表中。对象具有日期列,其日期格式为字符串。我需要更改日期格式。
我试过了;
<tbody>
<tr ng-repeat="row in table_data">
<td>{{row.availabledate | date:'MMMM dd, yyyy'}}</td>
</tr>
</tbody>
但是,因为它是字符串,所以没有格式化。为了性能,我不想在循环中转换它。有没有办法将此字符串转换为日期,然后在html部分格式化它?
答案 0 :(得分:0)
一种方法是制作自己的过滤器,然后使用日期过滤器。
这个原始/原始过滤器需要一个YYYYMMDD字符串并从中创建一个日期对象,然后您可以使用角度的日期过滤器。
app.filter('strToDate', function() {
return function(input) {
var year = input.substring(0,4);
var month = input.substring(4,6);
var day = input.substring(6,8);
// Do filter work here
return new Date(year,month,day);
}
});
然后
<td>{{row.availabledate | strToDate | date:'MMMM dd, yyyy'}}</td>
这是一个带有工作示例的Plunker链接:https://plnkr.co/edit/hn5StpktiMLq2gWHAszu?p=preview
您也可以让过滤器返回格式化日期。
答案 1 :(得分:0)
另一种方法,在过滤器内完成所有工作:
app.filter('strToDate', function($filter) {
//1. date value
//2. the format input by user
return function(input, format) {
//Create the date object
var year = input.substring(0,4);
var month = input.substring(4,6);
var day = input.substring(6,8);
var newDate = new Date(year,month,day);
// return the format selected
return $filter('date')(newDate , format)
}
});
您可以像这样使用过滤器:
<td>{{row.availabledate | strToDate :'MMMM dd, yyyy'}}</td>