Wie konvertiere ich einen Instant in ein Datumsformat? [duplicate]

Lesezeit: 3 Minuten

Benutzer-Avatar
Hari m

Ich kann a konvertieren java.util.Date zu einem java.time.Instant (Java 8 und höher) auf diese Weise:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 8);
cal.set(Calendar.MINUTE, 30);
Date startTime = cal.getTime();
Instant i = startTime.toInstant();

Kann mir jemand etwas über die Konvertierung dieses Augenblicks mit einem bestimmten Datums- und Zeitformat mitteilen? dh 2015-06-02 8:30:00

Ich habe api durchlaufen, konnte aber keine zufriedenstellende Antwort finden.

  • möchtest du ein String Ausgabe mit yyyy-MM-dd H:m:s?

    – Blip

    2. Juni 2015 um 10:13 Uhr


  • Gibt es einen bestimmten Grund, den Instant aus dem Kalender zu erhalten? und nicht das LocalDate oder andere java.time-Klassen verwenden? Wenn Sie den Kalender verwenden, können Sie die Calendar.getTime() ausführen, die die Date-Instanz zurückgibt. Die Sie später in ein beliebiges Format konvertieren können

    – Bilbo Beutlin

    2. Juni 2015 um 10:27 Uhr


  • Eigentlich bekomme ich vom Client nur ein sofortiges Objekt. Jetzt muss ich das Datum und die Uhrzeit des Augenblicks in der Datenbank speichern.

    – har m

    2. Juni 2015 um 10:56 Uhr

Wenn Sie eine konvertieren möchten Instant zu einem Date:

Date myDate = Date.from(instant);

Und dann können Sie verwenden SimpleDateFormat zum Formatierungsteil Ihrer Frage:

SimpleDateFormat formatter = new SimpleDateFormat("dd MM yyyy HH:mm:ss");
String formattedDate = formatter.format(myDate);

  • Verwenden DateTimeFormatter Anstatt von SimpleDateFormat da es nicht threadsicher ist. Aus diesem Grund hatte ich in der Vergangenheit einige Probleme. Weitere Details hier

    – ms_27

    26. November 2019 um 15:10 Uhr

  • Date und SimpleDateFormat sind alte Pre-Java8-Implementierungen, die vermieden werden sollten. Die nicht Thread-sichere Sache ist eines der Probleme, die Nichtverwaltung von Zeitzone und Offset ist ein anderes. Aber wenn Sie sich wirklich mit einem Zeitzonenfehler auseinandersetzen wollen, dann bleiben Sie bei der alten Date-Implementierung.

    – pdem

    20. Mai 2021 um 13:13 Uhr


  • Wenn Sie sagen „das und das sollte vermieden werden“, versuchen Sie, Alternativen anzubieten.

    – John Fantastico

    26. Mai 2021 um 14:00 Uhr

  • Können wir erzwingen, dass Date.From UTC ist? Vielen Dank

    – AXMIM

    17. August um 15:43 Uhr

Ein Augenblick ist das, was er sagt: ein bestimmter Zeitpunkt – er hat nicht die Vorstellung von Datum und Uhrzeit (die Zeit in New York und Tokio ist zu einem bestimmten Zeitpunkt nicht dieselbe).

Um es als Datum/Uhrzeit zu drucken, müssen Sie zuerst entscheiden, welche Zeitzone verwendet werden soll. Zum Beispiel:

System.out.println(LocalDateTime.ofInstant(i, ZoneOffset.UTC));

Dadurch wird das Datum/die Uhrzeit im ISO-Format gedruckt: 2015-06-02T10:15:02.325

Wenn Sie ein anderes Format wünschen, können Sie einen Formatierer verwenden:

LocalDateTime datetime = LocalDateTime.ofInstant(i, ZoneOffset.UTC);
String formatted = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(datetime);
System.out.println(formatted);

Versuchen Parsing und Formatierung

Nehmen Sie ein Beispiel
Parsing

String input = ...;
try {
    DateTimeFormatter formatter =
                      DateTimeFormatter.ofPattern("MMM d yyyy");
    LocalDate date = LocalDate.parse(input, formatter);
    System.out.printf("%s%n", date);
}
catch (DateTimeParseException exc) {
    System.out.printf("%s is not parsable!%n", input);
    throw exc;      // Rethrow the exception.
}

Formatierung

ZoneId leavingZone = ...;
ZonedDateTime departure = ...;

try {
    DateTimeFormatter format = DateTimeFormatter.ofPattern("MMM d yyyy  hh:mm a");
    String out = departure.format(format);
    System.out.printf("LEAVING:  %s (%s)%n", out, leavingZone);
}
catch (DateTimeException exc) {
    System.out.printf("%s can't be formatted!%n", departure);
    throw exc;
}

Die Ausgabe für dieses Beispiel, das sowohl die Ankunfts- als auch die Abfahrtszeit druckt, sieht wie folgt aus:

LEAVING:  Jul 20 2013  07:30 PM (America/Los_Angeles)
ARRIVING: Jul 21 2013  10:20 PM (Asia/Tokyo)

Weitere Informationen finden Sie auf dieser Seite-
https://docs.oracle.com/javase/tutorial/datetime/iso/format.html

1335530cookie-checkWie konvertiere ich einen Instant in ein Datumsformat? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy