Convertir entre LocalDate et sql.Date [dupliquer]

Cette question a déjà une réponse ici:

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

30
demandé sur assylias 2015-04-20 17:36:45

1 réponses

Java 8 version (et plus tard) de java.sql.Date a un support intégré pour LocalDate, y compris toLocalDate et valueOf(LocalDate).

Pour convertir LocalDate en java.sql.Date vous pouvez utiliser

java.sql.Date.valueOf( localDate );

Et pour convertir de java.sql.Date à LocalDate:

sqlDate.toLocalDate();

Fuseaux horaires:

Le type LocalDate ne stocke aucune information de fuseau horaire, alors que java.sql.Date le fait. 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 le commentaire).

Si vous ne voulez pas compter sur le 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();
65
répondu maja 2017-08-21 07:34:46