2013-05-29 9 views
8

Ich versuche, mithilfe von Joda Time lokales Datum zu UTC zu konvertieren. Der Code, den ich verwendet habe, ist unten gezeigt und es funktioniert großartig.JodaTime: Konvertieren lokal UTC Mehrdeutigkeit

Date localDate = new Date(); 
System.out.println("Local Date : " + localDate); 

DateTimeZone tz = DateTimeZone.getDefault(); 
Date utcDate = new Date(tz.convertLocalToUTC(localDate.getTime(), false)); 
System.out.println("UTC Date : " + utcDate); 

Output : 
Local Date : Wed May 29 11:54:46 EEST 2013 
UTC Date : Wed May 29 08:54:46 EEST 2013 

Aber wenn ich UTC Datum als Parameter an die DateTimeZone.convertLocalToUTC() Methode senden, es verringert auch die Stunde mit dem 3. Da es jedoch UTC Datum ist, erwarte ich es nicht Datum wieder zu konvertieren. Ist das ein Fehler oder fehlt mir etwas?

Date localDate = new Date(); 
System.out.println("Local Date : " + localDate); 

DateTimeZone tz = DateTimeZone.getDefault(); 
Date utcDate = new Date(tz.convertLocalToUTC(localDate.getTime(), false)); 
System.out.println("UTC Date : " + utcDate); 

Date utcDate2 = new Date(tz.convertLocalToUTC(utcDate.getTime(), false)); 
System.out.println("UTC Date 2 : " + utcDate2); 

Output : 
Local Date : Wed May 29 11:54:46 EEST 2013 
UTC Date : Wed May 29 08:54:46 EEST 2013 
UTC Date 2 : Wed May 29 05:54:46 EEST 2013 

Antwort

2

Blick auf mich aus der convertLocalToUTC() Methoden Sicht. Es dauert nur eine long und eine boolean. Es hat keine Kenntnis, dass die lange, die Sie es passieren, UTC oder nicht ist. Es geht davon aus, dass Sie eine long Ortszeit übergeben und entsprechend anpassen.

6

Per javadoc von convertLocalToUTC

Wandelt einen lokalen Augenblick zu einem Standard UTC Augenblick mit der gleichen lokalen Zeit. Diese Konvertierung wird nach einer Berechnung verwendet, bei der die Berechnung mit einer einfachen lokalen Zone durchgeführt wurde.

Methoden macht keine Annahme oder Validierung, das Datum in UTC ist bestanden hat oder nicht, ist es immer bestanden Datum als lokale prüfen und konvertiert in UTC. Ihre Programmausgabe ist korrekt.