Je veux convertir java.time.LocalDateen java.util.Datetype. Parce que je veux définir la date JDateChooser. Ou existe-t-il un sélecteur de date qui prend en charge les java.timedates?
Je veux convertir java.time.LocalDateen java.util.Datetype. Parce que je veux définir la date JDateChooser. Ou existe-t-il un sélecteur de date qui prend en charge les java.timedates?
Réponses:
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());Cela suppose que votre sélecteur de date utilise le fuseau horaire par défaut du système pour transformer les dates en chaînes.
atStartOfDay(), car cela change la valeur de la date, si je comprends bien.
                    Voici une classe utilitaire que j'utilise pour convertir les nouvelles java.timeclasses en java.util.Dateobjets et vice versa:
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class DateUtils {
  public static Date asDate(LocalDate localDate) {
    return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
  }
  public static Date asDate(LocalDateTime localDateTime) {
    return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
  }
  public static LocalDate asLocalDate(Date date) {
    return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
  }
  public static LocalDateTime asLocalDateTime(Date date) {
    return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
  }
}Modifié sur la base du commentaire @Oliv.
ZoneId.systemDefault()problématique car les fuseaux horaires changent au cours de l'année. Donc, si le 1er janvier, je suis dans le fuseau horaire -05: 00 (central), mais le 1er juillet, je suis dans le fuseau horaire -06: 00 (lumière du jour centrale), cela ne provoquera pas de résultats inexacts en raison de l'heure d'été temps?
                    Vous pouvez utiliser la java.sql.Date.valueOf()méthode comme:
Date date = java.sql.Date.valueOf(localDate);Pas besoin d'ajouter ici les informations d'heure et de fuseau horaire car elles sont prises implicitement. 
Voir LocalDate vers java.util.Date et vice versa la conversion la plus simple?
java.sql.Dateest destiné à la couche de base de données, JDBC, JPA. La couche Web (ou toute application client) doit absolument être exempte de toute dépendance java.sql.*.
                    java.sql.Dateest juste java.util.Dateavec son temps défini, 00:00:00mais le point de vue de la conception est qu'il java.sql.*n'est pas destiné à une couche avant avec laquelle les clients interagissent comme Servlets / JSP. java.util.Datedans le côté Java et java.sql.Timestampou tout ce qui est applicable java.sql.*dans le côté JDBC .
                    java.sql.*classes seront une dépendance distincte.
                    java.time a l'interface temporelle que vous pouvez utiliser pour créer des objets instantanés à partir de la plupart des classes de temps. Instant représente les millisecondes sur la chronologie de l'époque - la référence de base pour toutes les autres dates et heures.
Nous devons convertir la date en un ZonedDateTime, avec une heure et une zone, pour effectuer la conversion:
LocalDate ldate = ...;
Instant instant = Instant.from(ldate.atStartOfDay(ZoneId.of("GMT")));
Date date = Date.from(instant);Pour créer un java.util.Date à partir d'un java.time.LocalDate , vous devez
Le code pourrait ressembler à ceci:
LocalDate localDate = LocalDate.now();
Date date = new Date(localDate.atStartOfDay(ZoneId.of("America/New_York")).toEpochSecond() * 1000);toEpochSecondest héritée de java.time.chrono.ChronoZonedDateTime. Voir docs.oracle.com/javase/8/docs/api/java/time/chrono/…
                    Cela fonctionne pour moi:
java.util.Date d = new SimpleDateFormat("yyyy-MM-dd").parse(localDate.toString());https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#toString--
Solution Kotlin:
1) Collez cette fonction d'extension quelque part.
fun LocalDate.toDate(): Date = Date.from(this.atStartOfDay(ZoneId.systemDefault()).toInstant())2) Utilisez-le et ne revenez plus sur Google.
val myDate = myLocalDate.toDate()public static Date convertToTimeZone(Date date, String tzFrom, String tzTo) {
    return Date.from(LocalDateTime.ofInstant(date.toInstant(), ZoneId.of(tzTo)).atZone(ZoneId.of(tzFrom)).toInstant());
} Facile
public Date convertFrom(LocalDate date) {
    return java.sql.Timestamp.valueOf(date.atStartOfDay());
}java.util.Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());