2017-07-14 4 views

Antwort

8

Es gibt keine direkte Korrelation zwischen LocalDateTime und java.sql.Date, da früher ein Zeitstempel und letzteres ein Datum ist.

Es ist jedoch eine Beziehung zwischen LocalDate und java.sql.Date und Umwandlung kann wie folgt erfolgen:

LocalDate date = //your local date 
java.sql.Date sqlDate = java.sql.Date.valueOf(date) 

, die für jede gegebene LocalDateTime gibt Ihnen den folgenden Code:

LocalDateTime dateTime = // your ldt 
java.sql.Date sqlDate = java.sql.Date.valueOf(dateTime.toLocalDate()); 
11

@M. Prokhorov's answer is correct Ich möchte nur ein paar Punkte hinzufügen.

A java.sql.Date speichert nur die Werte für Tag, Monat und Jahr. Die Zeit Werte (Stunden, Minuten, Sekunden und Millisekunden) are all set to zero. Wenn Sie also eine LocalDateTime in eine java.sql.Date konvertieren, gehen diese Felder verloren.

Wenn Sie ein One-Way-Konvertierung tun und nichts dagegen, diese Felder zu verlieren, dann ist es in Ordnung, es zu tun:

LocalDateTime dt = // LocalDateTime value 
// convert to Date (time information is lost) 
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate()); 

Aber wenn Sie später die ursprüngliche LocalDateTime wiederherstellen möchten, ist es besser, die Zeitfelder speichern separetely, so können Sie es wiederherstellen:

LocalDateTime dt = // your LocalDateTime 
// save time information (hour, minute, seconds, fraction of seconds) 
LocalTime savedTime = dt.toLocalTime(); 
// convert to Date (time information is lost) 
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate()); 

// retrieve back the LocalDate (only day/month/year) 
LocalDate localDate = date.toLocalDate(); 
// retrieve the LocalDateTime, with the original time values 
LocalDateTime ldt = localDate.atTime(savedTime); 
+1

Diese Antwort muss die richtige Antwort auf diese Frage +1 sein. –

0

Konvertieren von Local zu java.sql.Date -

LocalDateTime dt = // your LocalDateTime 
long epochMillis = dt.atZone(ZoneOffset.UTC).toInstant().toEpochMilli() 
java.sql.Date date = new java.sql.Date(epochMillis); 
die Zeit Halteteil

Die java.sql.Date ist im Grunde ein Wrapper für Millisekunden, die seit dem 1. Januar 1970 00: 00: 00.000 GMT vergangen sind, daher behält diese Konvertierung die Zeitzoneninformationen von LocalDateTime nicht bei.

Verwandte Themen