2015-06-02 8 views
34

kann ich eine java.util.Date zu einem java.time.Instant (Java 8 und höher) auf diese Weise konvertieren:Wie konvertiert man ein Instant- in ein Datumsformat?

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 über die Bekehrter diesem Augenblick auf dem Laufenden mit einem bestimmten Datum & Zeitformat weiß jemand lassen? ie 2015-06-02 8:30:00

Ich habe durch API gegangen, konnte aber keine befriedigende Antwort finden.

+0

willst du eine 'String' Ausgabe mit' yyyy-MM-dd H: m: s'? – Blip

+0

Gibt es einen besonderen Grund, den Instant aus dem Kalender zu holen? und nicht die LocalDate oder andere java.time Klassen verwenden? Sie verwenden Kalender, Sie können die Calendar.getTime() tun, die die Date-Instanz zurückgibt. Welche Sie später in jedes Format –

+0

tatsächlich vom Client konvertieren können, bekomme ich nur Instant-Objekt .. Jetzt muss ich das Datum und die Uhrzeit von Instant in der Datenbank speichern. –

Antwort

-3
Instant i = Instant.ofEpochSecond(cal.getTime); 

Read more here und here

+0

eigentlich brauche ich date objekt von instant. –

+1

Ihre Antwort zeigt keine formatierte Datumszeichenfolge an. –

76

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

Date myDate = Date.from(instant); 

Und dann können Sie SimpleDateFormat für die Formatierung Teil Ihrer Frage verwenden:

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

Danke mein Freund. – vikingsteve

7

Ein Instant ist, was es sagt: ein bestimmter Zeitpunkt - es hat nicht die Vorstellung von Datum und Uhrzeit (die Zeit in New York und Tokio ist zu einem bestimmten Zeitpunkt nicht die gleiche).

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)); 

Dies wird das Datum/Uhrzeit im ISO-Format drucken: 2015-06-02T10:15:02.325

Wenn Sie ein anderes Format möchten, 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); 
1

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. 
} 

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 Formatierung, die sowohl die Zeit der Ankunft und Abreise druckt, ist wie folgt:

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

Für weitere Informationen besuchen Sie diese Seite - https://docs.oracle.com/javase/tutorial/datetime/iso/format.html