Angular JS-changements de Date lors de la soumission à la question $ http-Timezone

j'ai un problème étrange où un Date change quand il est passé à L'API par $http.mettre, je soupçonne un fuseau horaire question:

déclencheur ng-change event - console.log:

Tue Jun 10 2014 00:00:00 GMT+0100 (GMT Summer Time)

transmis à L'API en utilisant $http angulaire.mettre...

Quand il frappe Fiddler:

StartDate=2014-06-09T23:00:00.000Z

comme vous pouvez le voir la date change du 10 juin au 9 juin.

Comment puis-je arrêter ce changement de date? Est-ce la fuseau horaire provoque le changement? L'API et le côté client fonctionnent sur Localhost.

suite à cela:

lorsque le champ est cliqué une deuxième fois et que le curseur de données est lancé / date sélectionnée, cette deuxième fois le problème n'apparaît pas:

Console.log:

Wed Aug 06 2014 22:00:00 GMT+0100 (GMT Summer Time)

Fiddler données reçues:

StartDate=2014-08-06T21:00:00.000Z

16
demandé sur Flak DiNenno 2014-06-23 02:45:34

1 réponses

je pense que c'est un TZ problème, b/c la différence entre votre GMT+0100 et StartDate=2014-06-09T23:00:00.000Z5 heures.

.

La question:

Votre heure locale est actuellement BST (British Summer Time) équivalent à GMT +1

ce sera le moment par défaut lorsque vous lancerez votre appel API.

cependant, L'API a été écrite par Google en Californie, et ils sont plutôt égocentriques. Par conséquent, ils convertissent automatiquement le temps puisque vous ne fournissez aucun date mise en forme "instructions".

en d'autres termes, Chrome fait la conversion pour vous bien lorsque vous imprimez en console.log(), mais quand vous faites votre $http.put,Angulaire, sans formatage explicite pour vous, fait l'appel en utilisant son TZ par défaut (qui est PST)

.

Résolution

vous devez forcer la date mise en forme de vos paramètres régionaux.

  • gabarit angulaire

    {{ date_expression | date : 'yyyy-MM-dd HH:mm:ss'}}
    
  • En JavaScript

    $filter('date')(date, 'yyyy-MM-dd HH:mm:ss')
    
  • utilisation de la localisation

    <html>
      <head>
        <title>My Angular page</title>
        <script src="angular-locale_en-uk.js"></script>
        ...
      </head>
      <body>
        ...
      </body>
    </html>
    
12
répondu Flak DiNenno 2014-06-22 23:20:24