J'ai un objet JavaScript Date, Thu Jul 02 2015 00:00:00 GMT-0400 (Eastern Standard Time), qui est transmis à une méthode Java qui stocke cette date dans un objet Java Date. Mais l'objet de date Java affiche cette date sous la forme Wed Jul 01 23:00:00 CDT 2015. Comment puis-je obtenir la conversion correcte de la date JavaScript en date Java?

Remarque: cela ne se produit que lorsque mon PC est réglé sur l'heure normale de l'Est et que l'horloge est réglée vers 9 heures. En dehors de cela, si je remets le fuseau horaire de mon PC à l'heure standard centrale, ce n'est plus un problème.

Mettre à jour

Le nombre de millisecondes de l'époque au 07/02/15 est 1435809600000. Si je prends ces millisecondes et crée un objet Date JS comme ça, new Date(1435809600000), j'obtiens ceci: jeu. Juil. 02 2015 00:00 : 00 GMT-0400 (heure normale de l'Est) . Mais quand j'essaie de créer un objet Java Date, new Date(1435809600000), j'obtiens: Wed Jul 01 23:00:00 CDT 2015

0
Kyle 16 juil. 2015 à 17:20

3 réponses

Meilleure réponse

La meilleure solution est d'envoyer les données aussi longtemps (millisecondes à partir du 1/1/1970) et de construire une nouvelle date en java à partir de celle-ci.

Code Javascript

var date = ... // date is of type Date
var dateMillis = date.getTime();  // Milliseconds long representing the date

Code Java

long dateMillis = .... // Milliseconds long representing the date
Date date = new Date(dateMillis);
2
Davide Lorenzo MARINO 16 juil. 2015 à 14:22

Le problème est certainement la TZ locale du client. Peut-être que ce message peut vous aider, en supprimant la localisation de votre objet DateTime. Comment ignorer le fuseau horaire de l'utilisateur et forcer Date () à utiliser un fuseau horaire spécifique

0
Community 23 mai 2017 à 12:06

Essayez avec:

String fromJavascript = "Thu Jul 02 2015 00:00:00 GMT-0400";

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'Z", Locale.US);

try {
    Date converted = sdf.parse(fromJavascript);

    System.out.println(converted);
} catch (ParseException e) {            
    e.printStackTrace();
}

L'objet converti doit contenir la date correcte. Ce qui sera imprimé dépendra de la TZ du client en cours d'exécution. Mais que vous pouvez contrôler lors de la présentation.

0
gfelisberto 16 juil. 2015 à 14:40