596 Stimmen

Wie kann ich das aktuelle Datum und die Uhrzeit in UTC oder GMT in Java abrufen?

Wenn ich eine neue Date Objekts wird sie mit der aktuellen Zeit initialisiert, aber in der lokalen Zeitzone. Wie kann ich das aktuelle Datum und die Uhrzeit in GMT abrufen?

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 .

1voto

santoshlokhande Punkte 31
public class CurrentUtcDate 
{
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println("UTC Time is: " + dateFormat.format(date));
    }
}

Ausgabe:

UTC Time is: 22-01-2018 13:14:35

Sie können das Datumsformat nach Bedarf ändern.

3 Stimmen

Bitte bringen Sie den Kleinen nicht bei, die längst überholte und notorisch lästige SimpleDateFormat . Heute haben wir so viel besser in java.time die moderne Java-API für Datum und Uhrzeit . Was bieten Sie außerdem an, was nicht bereits in den Antworten von Dan, Antonio und anderen enthalten ist?

2 Stimmen

(a) Welchen Mehrwert bietet diese Antwort gegenüber den Dutzenden von bestehenden Antworten? (b) Die lästigen Klassen, die hier verwendet werden, wurden vor Jahren durch die modernen java.time Klassen. Ihre Verwendung im Jahr 2018 vorzuschlagen, ist ein schlechter Rat.

0 Stimmen

Es tut mir leid, aber dieses Mal habe ich die Zeit-API nicht verwendet. Auf jeden Fall stimme ich mit Ihrem Punkt und werde mein Bestes versuchen, neueste bessere Lösungen zu posten.

0voto

Managarm Punkte 1020

Wenn Sie joda time verwenden und die aktuelle Zeit in Millisekunden haben wollen ohne Ihren lokalen Offset können Sie dies verwenden:

long instant = DateTimeZone.UTC.getMillisKeepLocal(DateTimeZone.getDefault(), System.currentTimeMillis());

0voto

Asif Punkte 387

Verwenden Sie das Paket java.time und fügen Sie den folgenden Code ein.

ZonedDateTime now = ZonedDateTime.now( ZoneOffset.UTC );

o

LocalDateTime now2 = LocalDateTime.now( ZoneOffset.UTC );

je nach Ihrem Anwendungsbedarf.

1 Stimmen

(A) Bei Verwendung eines Offsets ( ZoneOffset ) und nicht eine Zeitzone ( ZoneId ), die OffsetDateTime ist besser geeignet als ZonedDateTime . (B) LocalDateTime sollte nicht für die Erfassung des aktuellen Zeitpunkts verwendet werden, da es kein Konzept der Zeitzone oder der Abweichung von der UTC hat. (C) Andere bereits existierende Antworten haben dieses Material abgedeckt und eine bessere Arbeit geleistet. Ich sehe nicht, wie diese Antwort einen Mehrwert bringt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X