Java Snippets

Java-Unix-Timestamp-Snippets

Java-Beispiele für aktuelle Epoch-Sekunden, Millisekunden, Instant-Umwandlung, zeitzonenbewusstes Formatieren und die modernen java.time-APIs.

Current Unix timestamp (seconds)
import java.time.Instant;

Instant.now().getEpochSecond()
Current Unix timestamp (milliseconds)
System.currentTimeMillis()
// or
Instant.now().toEpochMilli()
Instant from timestamp
import java.time.Instant;

Instant.ofEpochSecond(1700000000)
Instant.ofEpochMilli(1700000000000L)
Formatted string (UTC)
import java.time.*;
import java.time.format.DateTimeFormatter;

Instant.ofEpochSecond(1700000000)
    .atZone(ZoneOffset.UTC)
    .format(DateTimeFormatter.ISO_DATE_TIME)
In a specific timezone
import java.time.*;

Instant.ofEpochSecond(1700000000)
    .atZone(ZoneId.of("America/New_York"))
    .toString()

Grundlagen zu Java-Zeitstempeln

Moderner Java-Code sollte für die Zeitstempelarbeit java.time.Instant bevorzugen. Instant.now().getEpochSecond() liefert Unix-Sekunden und Instant.now().toEpochMilli() liefert Unix-Millisekunden.

Java-Millis in Unix-Zeitstempel

Java-Code beginnt häufig mit System.currentTimeMillis() — einem long von Epoch-Millisekunden. Für einen Standard-Unix-Zeitstempel in Sekunden teile durch 1000. Für ein Datum baue ein Instant. Verwende die expliziten Umwandlungen unten, statt den long durch verschiedene APIs zu reichen, die unterschiedliche Einheiten erwarten könnten.

  • long millis = System.currentTimeMillis(); // 13 digits, epoch ms
  • long secs = System.currentTimeMillis() / 1000L; // millis to Unix timestamp
  • Instant inst = Instant.ofEpochMilli(millis); // currentTimeMillis to date (Instant)
  • String iso = Instant.ofEpochMilli(millis).toString(); // ISO 8601 UTC
  • ZonedDateTime zdt = Instant.ofEpochMilli(millis).atZone(ZoneId.of("UTC"));
  • Verwende System.nanoTime() nur für Zeitmessungen verstrichener Dauer — es ist nicht epoch-basiert

Zeitzonenbewusste Java-Formatierung

Wandle ein Instant beim Anzeigen lokaler Zeit mit ZoneId in ein ZonedDateTime um. Halte Speicherung und Vergleiche in Instant oder UTC und formatiere erst am Rand der Anwendung.

Hinweise für den Produktiveinsatz von Java

Die java.time-API trennt Zeitpunkte, lokale Kalenderwerte und zeitzonenbewusste Anzeige. Verwende Instant für den Moment, der gespeichert oder verglichen werden soll. Verwende ZonedDateTime erst, nachdem du eine ZoneId für einen Nutzer, Mandanten oder Bericht gewählt hast. Vermeide das alte Date und Calendar, sofern eine ältere Bibliothek sie nicht erfordert.

  • Verwende Instant.now().getEpochSecond() für Unix-Sekunden
  • Verwende Instant.now().toEpochMilli() oder System.currentTimeMillis() für Millisekunden
  • Verwende Instant.ofEpochSecond(seconds) beim Empfang von Standard-Unix-Zeitstempeln
  • Verwende DateTimeFormatter.ISO_INSTANT für kompakte UTC-API-Ausgabe

FAQ

Sollte neuer Code Date oder Instant verwenden?
Verwende Instant für die Speicherung und den Vergleich von Zeitstempeln. Das veraltete Date kann in alten Bibliotheken noch auftauchen, aber java.time ist klarer für Sekunden, Millisekunden und zeitzonenbewusste Formatierung.
Was ist der Unterschied zwischen Instant und ZonedDateTime?
Instant ist der exakte Zeitpunkt in UTC. ZonedDateTime ist dieser Zeitpunkt, angezeigt mit einer ZoneId, was für nutzerseitige Daten und Berichte nützlich ist.
Wie überprüfe ich Java-Epoch-Werte?
Gib Instant.ofEpochSecond(seconds) oder Instant.ofEpochMilli(milliseconds) aus, bevor du einen Wert speicherst. Die ISO-Ausgabe sollte dem vom empfangenden System erwarteten UTC-Zeitpunkt entsprechen.
Wie wandle ich Millis in Java in einen Unix-Zeitstempel um?
Teile System.currentTimeMillis() durch 1000L für ein long von Unix-Sekunden: long secs = System.currentTimeMillis() / 1000L. Verwende Instant.ofEpochSecond(secs), um zurück in ein Instant zu gelangen.
Wie wandle ich currentTimeMillis in Java in ein Datum um?
Verpacke es in ein Instant: Instant.ofEpochMilli(System.currentTimeMillis()). Zur Anzeige kombiniere es mit einer ZoneId: ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) oder einer beliebigen anderen IANA-Zone.