Chcę przekonwertować java.time.LocalDate
na java.util.Date
typ. Ponieważ chcę ustawić datę na JDateChooser
. A może jest jakiś wybór daty, który obsługuje java.time
daty?
372
Chcę przekonwertować java.time.LocalDate
na java.util.Date
typ. Ponieważ chcę ustawić datę na JDateChooser
. A może jest jakiś wybór daty, który obsługuje java.time
daty?
Odpowiedzi:
Zakłada się, że wybieracz dat używa domyślnej systemowej strefy czasowej do przekształcania dat w ciągi znaków.
źródło
atStartOfDay()
, ponieważ zmienia wartość daty, tak jak ją rozumiem.Oto klasa narzędziowa, której używam do konwertowania nowszych
java.time
klas najava.util.Date
obiekty i odwrotnie:Edytowane na podstawie komentarza @Oliv.
źródło
ZoneId.systemDefault()
problematyczne, ponieważ strefy czasowe zmieniają się w ciągu roku. Więc jeśli w dniu 01 stycznia będę w strefie czasowej -05: 00 (centralnie), ale następnie w dniu 1 lipca będę w strefie czasowej -06: 00 (centralne światło dzienne), czy nie spowoduje to niedokładnych wyników z powodu oszczędności w świetle dziennym czas?Możesz użyć
java.sql.Date.valueOf()
metody jako:Nie musisz tutaj dodawać informacji o czasie i strefie czasowej, ponieważ są one pobierane niejawnie.
Zobacz LocalDate na java.util.Date i odwrotnie, najprostsza konwersja?
źródło
java.sql.Date
jest przeznaczony dla warstwy bazy danych, JDBC, JPA. Warstwa internetowa (lub dowolna aplikacja kliencka) powinna być absolutnie wolna od jakichkolwiek zależnościjava.sql.*
.java.sql.Date
jest po prostujava.util.Date
ustawiony na czas,00:00:00
ale punkt widzenia w perspektywie projektowej jest taki, żejava.sql.*
nie jest on przeznaczony dla przedniej warstwy, z którą klienci wchodzą w interakcje, jak serwlety / JSP.java.util.Date
po stronie Java i /java.sql.Timestamp
lub cokolwiek ma zastosowaniejava.sql.*
po stronie JDBC .java.sql.*
klasy będą osobną zależnością.java.time ma interfejs Temporal, którego można używać do tworzenia obiektów Instant z większości klas czasu. Natychmiastowa reprezentuje milisekundy na osi czasu w Epoce - podstawowe odniesienie dla wszystkich innych dat i godzin.
Musimy przekonwertować datę na ZonedDateTime, z czasem i strefą, aby wykonać konwersję:
źródło
Aby utworzyć java.util.Date z java.time.LocalDate , musisz
Kod może wyglądać następująco:
źródło
toEpochSecond
jest dziedziczonajava.time.chrono.ChronoZonedDateTime
. Zobacz docs.oracle.com/javase/8/docs/api/java/time/chrono/…To działa dla mnie:
https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#toString--
źródło
Rozwiązanie Kotlin:
1) Wklej gdzieś tę funkcję rozszerzenia.
2) Użyj go i nigdy więcej google.
źródło
źródło
Prosty
źródło
źródło