J'utilise un filtre js angulaire pour formater une date sur le contrôleur. Un utilisateur sélectionne une date dans un uib-datepicker-popup. C'est cette date que je souhaite mettre en forme au format de date ISO 8601 (aaaa-mm-jj). J'enregistre ensuite ma date choisie par l'utilisateur et j'obtiens quelque chose comme ça

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

Cependant, j'utilise ensuite un filtre $ angulaire comme celui-ci

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

Et terminer avec la date

2016-00-20

Voici mon code sur ma manette

        // 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);

Qu'est-ce que je fais mal?

0
Dennis Wanyonyi 8 août 2016 à 16:19

3 réponses

Meilleure réponse

Lorsque vous écrivez le mm dans votre filtre, le filtre pense que vous voulez dire minutes avec cela.
Pour que le filtre comprenne que les m doivent être MAJUSCULES, il comprend donc que vous voulez dire month.
Changer le filtre de:

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

À

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

Résoudrait votre problème.

1
etrupja 8 août 2016 à 13:35

Le filtre doit être comme «aaaa-MM-jj» consultez cette documentation filtre angulaire

2
Ahmet Zeytindalı 8 août 2016 à 13:33

Pourquoi n'utilisez-vous pas ui.bootstrap.dateparser? Pas besoin de créer un filtre personnalisé quand il y en a déjà un intégré à ui.bootstrap.datepicker. Directives angulaires pour Bootstrap

0
Mickers 8 août 2016 à 13:32