Date Javascript () Désignez une date incorrecte d'une heure

J'envoie cette date à partir de mon contrôleur dans java ( Spring-MVC ) le type dans mysql est datetime

 @Temporal(TemporalType.TIMESTAMP) @Column(name = "..") public Date getYy() { return this.yy; } 

Comme: [2015-09-30 00:00:00.0]

Quand j'obtiens ces dates avec ajax comme 1443567600000 :

new Date(1443567600000) convertissez au Tue Sep 29 2015 23:00:00 GMT+0000 (Maroc)

Alors, pourquoi me trompe-t-on d'une heure?

SOLUTION

Nous le résolvons par

 d = new Date(value) ; d.setTime( d.getTime() - new Date().getTimezoneOffset()*60*1000 ); 

Car il s'agissait de l'heure d'été (DST) ou du temps d'été. Bon article

Je pense que c'est peut-être un problème d' heure d'été . Vous pouvez vérifier le fuseau horaire de votre client et le fuseau horaire de votre serveur. (Serveur Web ou serveur SQL)

Nous devrions probablement avoir besoin de plus de données à ce sujet, mais cela pourrait être que rien n'est mal ici, cela dépend de la façon dont vous définissez et récupérez votre date.

Fondamentalement 1443567600000 ne contient pas de fuseau horaire. Il représente le Tue Sep 29 2015 23:00:00 de Greenwich. C'est un moment dans le temps qui, bien sûr, est différent de n'importe quel endroit qui a un fuseau horaire différent. Le même moment arrive à un moment différent (le minuit de GMT + 1 est le 11 heure GMT).

Vous devez conserver à la fois le temps et le fuseau horaire dans votre base de données, et peut-être renvoyer à JS, sinon il sera toujours interprété différemment dépend de l'heure locale du client.

Pour donner un exemple:

 var d = new Date(2015, 8, 30); console.log(d.toJSON()); // In my case I got "2015-09-29T22:00:00.000Z" console.log(d.toDateString()); // "Wed Sep 30 2015"