webentwicklung-frage-antwort-db.com.de

Wie konvertiere ich einen Instant in ein Datumsformat?

Ich kann ein Java.util.Date zu einem Java.time.Instant (Java 8 und höher) so:

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 mitteilen, ob ich diesen Zeitpunkt mit einem bestimmten Datums- und Uhrzeitformat umgerechnet habe? d.h. 02.06.2015 8:30:00 Uhr

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

69
hari m

Wenn Sie ein Instant in ein Date konvertieren möchten:

Date myDate = Date.from(instant);

Und dann können Sie SimpleDateFormat für den Formatierungsteil Ihrer Frage verwenden:

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

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

Um es als Datum/Uhrzeit auszudrucken, müssen Sie zunächst entscheiden, welche Zeitzone verwendet werden soll. Zum Beispiel:

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

Dadurch wird das Datum und 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);
11
assylias

try Parsen und Formatieren

Nehmen Sie ein Beispiel Parsen

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, bei der sowohl die Ankunfts- als auch die Abfahrtszeit gedruckt wird, lautet wie folgt:

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

1
Saket Mittal