Witam
Mam następujące pytanie: Jak najlepiej przechowywać date(dd:mm:yyyy) dla modelu,tak żeby było można było łatwo ją modyfikować i zapisywać/odczytywać z bazy danych (jdbc / hibernate)? Niestety java.util.Date jest problematyczne(trzeba dużo kodu pisać,bo np. konstruktor ze stringiem jest przestarzały itp).
Jaki obiekt/klasa do przechowywania daty?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 3573
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Java 8 trochę w tej kwestii poprawiła, bo zrobiła swojego standardowego klona dla joda time
https://docs.oracle.com/javase/tutorial/datetime/iso/date.html
https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
- Rejestracja: dni
- Ostatnio: dni
Z tym, że trzeba się pobawić i dopisać konwertery (JPA 2.1).
https://weblogs.java.net/blog/montanajava/archive/2014/06/17/using-java-8-datetime-classes-jpa
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 3573
A coś dla javy 7?
Bo na razie znam taką metodę:
date=new String("01/12/1992");
sdf=new SimpleDateFormat("dd/mm/yyyy");
try{
p.setBirthDay(sdf.parse(date));
}catch(Exception ex){
}
Ale to troche dużo kodu jak na zwykłą date
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
Biblioteka JodaTime:
String dateString = "01/12/1992"; // nie korzystaj z new String() !!!!!!
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/mm/yyyy");
DateTime date = formatter.parseDateTime(dateString );
// możesz sobie teraz bardzo wygodnie pobierać dzień, miesiąc, rok i wiele innych danych
String dateString2 = date.toString(formatter); // data zmieniona w string "01/12/1992"
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 1683
zawsze w encjach itd... możesz używać bezpiecznie java.util.Date a do różnych operacji na datach pomagać sobie Joda-Time konstruktorami przyjmującymi java.util.Date oraz toDate() zwracające java.util.Date. albo z javy8 z tym, że tamte wydają mi się gorsze.
przyjmujemy jakieś util.Date i zwracamy util.Date
Date date = LocalDate.fromDateFields(new Date()).plusDays(2).toDate();