st-table将字符串转换为日期

时间:2017-07-29 14:24:24

标签: angularjs smart-table

我将json对象数组绑定到表中。对象具有日期列,其日期格式为字符串。我需要更改日期格式。

我试过了;

<tbody>
<tr ng-repeat="row in table_data">
  <td>{{row.availabledate | date:'MMMM dd, yyyy'}}</td>
</tr>
</tbody> 

但是,因为它是字符串,所以没有格式化。为了性能,我不想在循环中转换它。有没有办法将此字符串转换为日期,然后在html部分格式化它?

2 个答案:

答案 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>