2016-04-22 17 views
-1
erwarten würde

Ich habe eine Zeit von einem Server im folgende JSON-Format gezogen:moment.js in Winkel formatiert nicht, wie ich

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

I momentjs mit dem folgenden Filter mit schrägem bin mit:

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

Ich würde die folgende Ausgabe erwarten: 08:11 am. Stattdessen bekomme ich: 04:04 am. Ich vermute, dass es etwas mit Zeitzonen zu tun haben könnte, aber ich bin mir nicht sicher. Wie behebe ich das?

+1

Moment ist eine js lib, nicht ein Winkelfilter, wenn Sie einen Filter mit dem Namen 'moment' definiert haben, die es dann schreiben Sie nutzt das lib-Code ist – svarog

+0

tatsächlich Winkel Moment kommt mit eingebauten Filtern. Ich habe nichts definiert. – Philip7899

Antwort

0

ändern MM bis mm (Monate bis Minuten:))

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

eine Alternative. JS-Datum ist ein ISO-Datum, daher müssen wir nur die Momentum-Konvertierungsmethode verwenden, um die native JS-Datumsformatierung zu verwenden. Dazu müssen Sie kein benutzerdefiniertes Formatierungsprogramm erstellen.

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