java.time
Sie verwenden alte veraltete Datum-Zeit-Klassen, die schlecht konzipiert, verwirrend und mühsam erwiesen werden. Verwenden Sie stattdessen java.time.
Das java.time Framework ist in Java 8 und höher integriert. Diese Klassen ersetzen die alten problematischen Datum-Zeit-Klassen wie java.util.Date
, .Calendar
, & java.text.SimpleDateFormat
. Das Team Joda-Time empfiehlt auch die Migration zu java.time.
Weitere Informationen finden Sie unter Oracle Tutorial. Und suchen Sie nach Stack Overflow für viele Beispiele und Erklärungen.
Ein großer Teil der java.time Funktionalität zurückportiert zu Java 6 & 7 in ThreeTen-Backport und weiter in ThreeTenABP auf Android angepasst.
ISO 8601
Ihr Eingabestring entspricht ISO 8601 Standard. Diese Standardformate werden standardmäßig in java.time-Klassen verwendet. Sie müssen also kein Formatierungsmuster angeben.
Offset
Ihr Eingangswert hinter UTC ein Offset-von-UTC, eine Reihe von 8 Stunden.
Die Klasse OffsetDateTime
repräsentiert solche Werte.
OffsetDateTime odt = OffsetDateTime.parse("2016-01-01T10:30:00-0800");
Zeitzone
Eine Zeitzone ist eine Offset-von-UTC und eine Reihe von Regeln für den Umgang mit Anomalien wie Sommerzeit (DST). Wenn Sie sich sicher sind, dass die Zeitzone als Kontext für diesen Wert dient, wenden Sie sie an, um eine ZonedDateTime
zu erhalten.
Geben Sie eine Zeitzone (ZoneId
) durch eine proper time zone name im Format continent/region
an. Verwenden Sie niemals die 3-4 Buchstaben Abkürzungen wie EST
oder IST
, da diese nicht echte Zeitzonen sind, sind nicht standardisiert und sind nicht einmal einzigartig (!).
ZoneId zoneId = ZoneId.of("America/Los_Angeles");
ZonedDateTime zdt = odt.atZone(zoneId);
Zeitzone ändern
Wenn Sie diesen Wert durch die Linse der lokalen time in India sehen wollen, können Sie eine andere Zeitzone anwenden können einen neuen ZonedDateTime
zu erstellen. Die Klassen java.time verwenden das Muster immutable objects. Beachten Sie also, dass die Klassen java.time, anstatt die Zeitzoneneinstellung für ein vorhandenes Objekt zu ändern ("mutate"), ein neues Objekt mit einigen seiner Mitglieder basierend auf den Elementen des ursprünglichen Objekts erstellen.
ZonedDateTime zdt_Kolkata = zdt.withZoneSameInstant(ZoneId.of("Asia/Kolkata")) ;
Was ist Ihr Standort? – Abhay
@abhay App Server läuft auf UTC-Zeit und lokale Maschine Indien – techsavvy
Zeigen Sie Ihren Code, der das genaue Problem zeigt. – Jesper