Ich bin wirklich verwirrt mit dem Ergebnis, das ich mit dem Calendar.getInstance(TimeZone.getTimeZone("UTC"))
Methodenaufruf erhalte. Es gibt IST-Zeit zurück.
Hier ist der Code, den ich verwendet habe
Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());
und die Antwort, die ich bekam, ist:
Sat Jan 25 15:44:18 IST 2014
Also habe ich versucht, die Standard-Zeitzone auf UTC zu ändern, und dann habe ich überprüft, ob sie einwandfrei funktioniert
Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());
TimeZone tz = TimeZone.getDefault() ;
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Calendar cal_Three = Calendar.getInstance();
System.out.println(cal_Three.getTime());
TimeZone.setDefault(tz);
Ergebnis:
Sat Jan 25 16:09:11 IST 2014
Sat Jan 25 10:39:11 UTC 2014
Vermisse ich hier etwas?
java.util.Date
ist unabhängig von der Zeitzone. Wenn Sie drucken,cal_Two
obwohl für dieCalendar
Instanz die Zeitzone eingestellt ist,UTC
wirdcal_Two.getTime()
eineDate
Instanz zurückgegeben, die keine Zeitzone hat (und immer in der Standardzeitzone liegt).Ausgabe:
Aus dem Javadoc von
TimeZone.setDefault()
Somit bewegen Sie
setDefault()
vorcal_Two
instanziiert würden Sie das richtige Ergebnis bekommen.Ausgabe:
quelle
arbeitet für mich
quelle
Sie vermissen definitiv eine kleine Sache und das heißt, Sie setzen keinen Standardwert:
Der Code würde also so aussehen:
Erläuterung : Wenn Sie die Zeitzone ändern möchten, legen Sie die Standardzeitzone mit fest
TimeZone.setDefault()
quelle
quelle
Versuchen Sie es
GMT
anstelle vonUTC
. Sie beziehen sich auf dieselbe Zeitzone, der NameGMT
ist jedoch häufiger und funktioniert möglicherweise.quelle