Wie komme ich an ein Zulu-Date?

Chefkoch333

Erfahrenes Mitglied
Hi,
ich stehe gerade auf dem Schlauch. Ich möchte eigentlich nur die Lokale Zeit als Zulu Zeit ausgeben.
Mein erster Ansatz war:
Code:
Calendar now = Calendar.getInstance(TimeZone.getTimeZone("Zulu"));
System.out.println(now.getTime());

Dort bekomme ich aber GMT+2 zurück, also die lokale Zeit. Allerdings verstehe ich nicht ganz wieso...

Nach ein bissl rumbasteln habe ich nun folgende Lösung gefunden:
Code:
Calendar now = Calendar.getInstance();
now.setTimeInMillis(now.getTimeInMillis()-now.getTimeZone().getOffset(now.getTimeInMillis()));

Allerdings finde ich das das ganze ein wenig krank aussieht. Gibt es denn keine elegante Lösung?

Danke und Gruß
ck.
 
ok bin gerade mit Tipps eines Kollegen drauf gekommen. Bei der Ausgabe Date.toString() wird immer die Default Timezone verwendet. Setzt man einen DateFormatter ein kann eine beliebige TZ gewählt werden. Die Lösung ist:
Code:
Calendar now = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("Zulu"));
System.out.println(sdf.format(now.getTime()));
 
Nur frage ich mich, warum du da für die aktuelle Uhrzeit ein Calendar-Objekt erstellst? Weil dich nur das Date-Objekt im Calendar interessiert. Ein sdf.format(new Date()) wäre daher ausreichend :)
Weil das Calendar-Objekt ist seeeehr teuer im Vergleich zu einem simplen Date.


Wenn du mehr mit Zeiten hantierst empfiehlt es sich die library JodaTime. Diese wird in ähnlicher Form in Java 8 der JVM hinzugefügt.
 
Zurück