st-table 将字符串转换为日期
st-table convert string to date
我将 json 对象数组绑定到 table。对象有一个日期列,它是日期格式但是字符串。我需要更改日期格式。
我试过了;
<tbody>
<tr ng-repeat="row in table_data">
<td>{{row.availabledate | date:'MMMM dd, yyyy'}}</td>
</tr>
</tbody>
但是,因为它是字符串,所以没有格式化。为了性能,我不想循环转换它。有没有办法将此字符串转换为日期,然后在 html 部分对其进行格式化?
一种方法是制作自己的过滤器,然后使用日期过滤器。
此 crude/raw 过滤器需要一个 YYYYMMDD 字符串并从中创建一个日期对象,然后您可以在该对象上使用 angular 的日期过滤器。
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 link 的工作示例:https://plnkr.co/edit/hn5StpktiMLq2gWHAszu?p=preview
您也可以将过滤器 return 设置为格式化日期。
另一种方式,在过滤器内完成所有工作:
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>
我将 json 对象数组绑定到 table。对象有一个日期列,它是日期格式但是字符串。我需要更改日期格式。
我试过了;
<tbody>
<tr ng-repeat="row in table_data">
<td>{{row.availabledate | date:'MMMM dd, yyyy'}}</td>
</tr>
</tbody>
但是,因为它是字符串,所以没有格式化。为了性能,我不想循环转换它。有没有办法将此字符串转换为日期,然后在 html 部分对其进行格式化?
一种方法是制作自己的过滤器,然后使用日期过滤器。
此 crude/raw 过滤器需要一个 YYYYMMDD 字符串并从中创建一个日期对象,然后您可以在该对象上使用 angular 的日期过滤器。
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 link 的工作示例:https://plnkr.co/edit/hn5StpktiMLq2gWHAszu?p=preview
您也可以将过滤器 return 设置为格式化日期。
另一种方式,在过滤器内完成所有工作:
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>