web-dev-qa-db-fra.com

Convertir entre LocalDate et sql.Date

Quelle est la bonne façon de convertir entre Java.sql.Date et LocalDate (Java8)?

45
maja

La version de Java 8 (et ultérieure) de Java.sql.Date Intègre le support pour LocalDate, y compris toLocalDate et valueOf(LocalDate) .

Pour convertir de LocalDate en Java.sql.Date, Vous pouvez utiliser

Java.sql.Date.valueOf( localDate );

Et pour convertir de Java.sql.Date En LocalDate:

sqlDate.toLocalDate();

Fuseaux horaires:

Le type LocalDate ne stocke aucune information de fuseau horaire, contrairement à Java.sql.Date. Par conséquent, lors de l'utilisation des conversions ci-dessus, les résultats dépendent du fuseau horaire par défaut du système (comme indiqué dans les commentaires).

Si vous ne voulez pas vous fier au fuseau horaire par défaut, vous pouvez utiliser la conversion suivante:

Date now = new Date();
LocalDate current = now.toInstant()
                       .atZone(ZoneId.systemDefault()) // Specify the correct timezone
                       .toLocalDate();
94
maja