Die folgende Aussage scheint nicht korrekt zu sein Antwort von Jon Skeet . Er sagte:
java.util.Date
ist immer in UTC. Wie kommen Sie darauf, dass es sich um die lokale Zeit? Ich vermute, dass das Problem darin besteht, dass Sie die Anzeige über eine Instanz von Calendar anzeigt, die die lokale Zeitzone verwendet, oder möglicherweise mit Date.toString()
die ebenfalls die lokale Zeitzone verwendet.
Allerdings ist der Code:
System.out.println(new java.util.Date().getHours() + " hours");
gibt die lokalen Stunden an, nicht die GMT (UTC-Stunden), und verwendet keine Calendar
und keine SimpleDateFormat
überhaupt nicht.
Aus diesem Grund scheint etwas nicht zu stimmen.
Zusammenstellung der Antworten, des Codes:
System.out.println(Calendar.getInstance(TimeZone.getTimeZone("GMT"))
.get(Calendar.HOUR_OF_DAY) + " Hours");
zeigt die GMT-Stunden anstelle der lokalen Stunden an - beachten Sie, dass getTime.getHours()
fehlt, denn das würde zu einer Date()
Objekt, das theoretisch das Datum in GMT speichert, aber die Stunden in der lokalen Zeitzone wiedergibt.
0 Stimmen
Ich weiß, diese Art von Themen sind völlig über diskutiert, aber ich fand die commons-lang-Paket wirklich behandelt diese gemeinsame Java-Probleme gut. commons.apache.org/lang/api-2.5/org/apache/commons/lang/time Informieren Sie sich über die verschiedenen Pakete, die sie anbieten.
0 Stimmen
Welche Ortszeit wünschen Sie und mit welcher Genauigkeit. Die meisten Zeitzonen sind relativ zur UTC definiert, mit einem festen Offset gemessen in SI Sekunden, aber die Beziehung der GMT, die auf der Sonnenbeobachtung und einer (leicht) variablen Länge der Sekunde basiert, ist komplexer. Die beiden unterscheiden sich um bis zu 0,9 Sekunden.
4 Stimmen
A
Date
enthält keine Zeitzone, daher ist "aber in der lokalen Zeitzone" nicht korrekt (oder bestenfalls ungenau). Siehe Alles über java.util.Date .