GOOGLE ADS

Mittwoch, 27. April 2022

Java Instant Datetime, wie man die Datetime nur mit Zeitzonen-Offset erhält? ohne Regionsangabe

Ich verwende Java Instant, um die aktuellen Datums- und Uhrzeitinformationen abzurufen, aber es gibt mir die UTC-Datumszeit mit Zoder mit zurück [Europe/Berlin]. Wie bekomme ich die DatetimeInformationen nur mit Zeitzonen-Offset?

Folgendes ist der Code, den ich habe:

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Test {
public static void main(String[] args) {
Instant instant = Instant.now();
System.out.println("Current Time: " + instant);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println("LocalDateTime: " + localDateTime);
ZonedDateTime zonedDateTime1 = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println("ZonedDateTime1: " + zonedDateTime1);
}
}

Folgendes ist die Ausgabe, die ich habe:

Current Time: 2022-04-13T08:22:35.362644Z
LocalDateTime: 2022-04-13T10:22:35.362644
ZonedDateTime1: 2022-04-13T10:22:35.362644+02:00[Europe/Berlin]

Meine erwartete Ausgabe ist:

expected output: 2022-04-13T10:22:35.362644+02:00

Wie kann ich meine erwartete Ausgabe 2022-04-13T10:22:35.362644+02:00mit erhalten Instant? Ich bin mir bewusst, dass ich die substring() tun kann, aber ich möchte das nicht tun. Ich suche nach einem direkten Ansatz, um dies zu erreichen. Bitte machen Sie einen Vorschlag.

Außerdem möchte ich die Regionsinformationen nicht weitergeben, da auf die Anwendung über verschiedene Regionen hinweg zugegriffen werden kann, also möchte ich die Region nicht im Code fest codieren.


Lösung des Problems

Ich verstehe nicht, warum Sie brauchen Instant. Der folgende Code gibt Ihre gewünschte Ausgabe:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class Test {
public static void main(String[] args) {
System.out.println(ZonedDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
}
}

Wenn ich den obigen Code ausführe, erhalte ich die folgende Ausgabe:

2022-04-13T12:25:31.1157466+03:00

Meine lokale Zeitzone ist der UTC drei Stunden voraus.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...