Frage von dirkmedi, 24

Jave Datumsausgabe + 2 Stunden?

Bei der Abfrage ist die Uhrzeit -2 Stunden zur MEZ. Kann mir jemand sagen wie ich es richtig mache?

import java.text.SimpleDateFormat; import java.util.Date;

/** * @author Darimont *
*/ public class Test21 {

public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss");
    System.out.println(sdf.format(new Date()));
}

}

Antwort

Zunächst einmal würde ich dir empfehlen nicht mehr die alte Datums-API von Java zu verwenden. In Java 8 wurde die deutlich bessere Joda Time API integriert, die diese Art von Aufgaben einfacher macht.

Da geht dann z.B. das:

LocalDateTime time = LocalDateTime.now();

Das ist dann eine Zeit ohne Zeitzonen, was man üblicherweise so meint, wenn man von Zeit spricht. Dann gibt es noch weitere Operationen zur Modifizierung, wie z.B.

LocalDateTime timeTwoHoursLater = time.plusHours(2); 

um ein anderes Datums/Zeit-Objekt zu bekommen.

Siehe auch hier: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html

Kommentar von PWolff ,

Wenn ZonedDateTime zuverlässig funktioniert, würde ich das empfehlen. Ich bekomme immer leichte Magenschmerzen, wenn jemand irgendwas zu einer Zeit addiert, um in eine andere Zeitzone zu kommen, anstatt das die Formatierungsroutine erledigen zu lassen.

https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html

(Bin leider nicht so sehr der Java-Fachmann)

Kommentar von thomaszZz, Software Engineer bei gutefrage ,

Wenn man einen eindeutigen Zeitpunkt benötigt, ist ZonedDateTime korrekt, ja. Mein Beispiel oben mit plusHours war nicht bezogen auf das korrigieren von Zeitzonen. In dem Fall sollte der Fragesteller die Zeitzone des Servers korrekt einstellen.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten