Mauvaise date angulaire du matériau sélecteur de date
- Je utiliser le datepicker pour choisir une date et de l'envoyer au serveur.
Quand je me connecte le JS valeur-je obtenir le résultat correct:
Tue Mar 22 2016 00:00:00 GMT+0100 (Mitteleuropäische Zeit)
mais dans la requête ajax, il est
2016-03-21T23:00:00.000Z
Je n'ai pas modifier les valeurs, tout en donnant à l'objet de angulars http fonction.
Ne Angulaire besoin d'un peu de configuration pour gérer cela?
J'ai trouvé l'ajout de ng-modèle-options="{fuseau horaire: 'utc'}" à la md-date-picker être une bonne solution.
OriginalL'auteur cre8 | 2016-03-01
Vous devez vous connecter pour publier un commentaire.
Ces deux chaînes représentent le même temps. On est en UTC, soit GMT +0, que vous pouvez voir à partir de la
Z
fin. L'autre se trouve dans un autre fuseau horaire, spécifiquement GMT +1 heure.Si vous aviez javascript date d'objets pour les deux chaînes, et les a transformées en nombres entiers, c'est à dire de secondes écoulées depuis le 1er janvier 1970 UTC, vous trouverez identiques. Ils représentent la même instant mais dans deux différents emplacements géographiques.
Généralement, c'est une bonne chose. Traitant des fuseaux horaires devient très confus. Je trouve qu'il vaut mieux pour un serveur de toujours faire face à l'UTC.
Je vous suggère fortement de ne pas essayer. Le serveur peut stocker UTC, puis il peut envoyer UTC au navigateur. Javascript est possible de construire une
Date
objet à partir de l'heure UTC, et il sera par défaut à l'affichage de l'utilisateur localisée de fuseau horaire, sans que vous ayez à faire quoi que ce soit. Si vous vraiment à stocker le fuseau horaire spécifique sur le serveur, vous pouvez forcer la valeur à une chaîne de caractères avant de les envoyer en appelant son.toString()
méthode.OriginalL'auteur Chris
Vous pouvez essayer le morceau de code suivant
Pas besoin de localisation, utilisez ce code juste avant de faire l'appel de service. Il va passer vous la date exacte de ce que vous avez sélectionné dans le datepicker.
Il fonctionne dans tous fuseau horaire (+) et (-),
Exemple:
2016-03-21 00:00:00 GMT+0100
, le dessus de ladite code secrètes comme2016-03-21 01:00:00 GMT+0000
. En Service, il la convertit en tant que2016-03-21 00:00:00
.Je pense que ça va résoudre votre problème.
OriginalL'auteur B.Balamanigandan
https://github.com/angular/material/pull/9410
Découvrez la 1.1.1+ version. Cela permettra de résoudre votre problème.
OriginalL'auteur Kunal Panchal