2016-08-08 26 views
0

Ich benutze angular js-Filter, um ein Datum auf dem Controller zu formatieren. Ein Benutzer wählt ein Datum aus einer uib-datepicker-popup aus. Es ist dieses Datum, das ich unter Verwendung ISO 8601 (JJJJ-MM-TT) Datumsformat formatiert werden soll. Ich log dann meine die vom Benutzer abgeholt Datum und dann bekomme ichKonvertieren von Datum mit Angular JS-Filter schlägt fehl

$filter('date')(new Date(vm.my_date), 'yyyy-mm-dd');

und aufzuwickeln mit dem Datum wie diese Winkel $ Filter verwenden, wie

so etwas wie dieses

Sat Aug 20 2016 00:00:00 GMT+0300 (EAT)

jedoch

2016-00-20

Hier ist mein Code auf meinem Controller

 // Logs Sat Aug 20 2016 00:00:00 GMT+0300 (EAT) 
     console.log(vm.my_date); 

     var converted = $filter('date')(new Date(vm.my_date), 'yyyy-mm-dd'); 

     // Logs 2016-00-20 
     console.log(converted); 

Was mache ich falsch?

Antwort

1

, wenn Sie die mm in Ihrem Filter schreiben die Filter denkt, dass Sie minutes, darunter verstehen.
Für den Filter zu verstehen, die m s müssen GROß sein, damit es versteht, dass Sie month bedeuten.
Filter wechseln aus:

var converted = $filter('date')(new Date(vm.my_date), 'yyyy-mm-dd'); 

zu

var converted = $filter('date')(new Date(vm.my_date), 'yyyy-MM-dd'); 

würde Ihr Problem beheben.

+0

Danke, ich hatte keine Ahnung, dass die Lösung so einfach war. –

+0

@DennisWanyonyi Gern geschehen. :) – eg16

0

Warum benutzen Sie den ui.bootstrap.dateparser nicht? Es ist nicht notwendig, einen benutzerdefinierten Filter zu erstellen, wenn bereits einer in ui.bootstrap.datepicker integriert ist. Angular Directives for Bootstrap

2

Filter sollte wie 'yyyy-MM-dd' Kontrolle dieser Dokumentation angular filter