2016-04-22 43 views
-1

我已经从一个服务器拉进下面的JSON格式的时间:moment.js在角度不格式化,因为我所期望的

"begins_at":"2016-04-22T08:11:07.000Z" 

我使用momentjs具有角与以下过滤器:

{{event_details.begins_at | moment: "format": "HH:MM a"}} 

我期待以下输出:08:11 am。相反,我得到:04:04 am。我怀疑它可能与时区有关,但我不确定。我该如何解决?

+1

时刻是一个js lib下,不是一个角度滤波器,如果您已经定义了一个名为'moment'滤波器,利用了LIB然后发布它的代码实际上 – svarog

+0

角一刻带有内置过滤器。我没有定义任何东西。 – Philip7899

回答

0

变化MM毫米(数月至分钟:))

angular.module('app', []) 
 
    .provider('moment', function() { // be nice for DI 
 
    this.$get = function() { 
 
     return moment 
 
    } 
 
    }) 
 
    .controller('ctrl', function() { 
 
    this.event_details = { 
 
     begins_at: '2016-04-22T08:11:07.000Z' 
 
    } 
 
    }) 
 
    .filter('moment', function(moment) { 
 
    return function(input, options) { 
 
     return moment(input).format(options.split('\'')[1]) // ugly formatter ; (
 
    } 
 
    })
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 

 
<div ng-app='app'> 
 
    <div ng-controller='ctrl as c'> 
 
    moment: {{ c.event_details.begins_at | moment:"format: 'HH:mm a'" }} 
 
    </div> 
 
</div>

0

一种替代。 JS日期是一个ISO日期,所以我们只需要使用时刻转换方法来使用JS本地日期格式。这不需要您创建自定义格式器。

{{myMomentDate.toISOString() | date: <your angular filter>}}