2010-01-20 10 views
7

HI Chciałbym wiedzieć, dlaczego istnieją dwie klasy data w dwóch różnych opakowaniach w jednym java.util.Date i jeden w java.sql.Date? Co za korzystanie z dwóch klas Data?dlaczego dwie klasy dat jedna w java.util.Date i java.sql.Date?

+4

Czasem wydaje mi się, że programiści będą trudniej pracować. – stacker

+0

A potem jest JODA ... –

+0

Ale przeskoczyłeś 'java.util.Calendar'! Jak na ironię, nie ma ani jednej z nich (klasy JDK), którą powinieneś używać (chyba że jest to konieczne). Joda-Time to jedyny API daty/czasu, zrobiony poprawnie. –

Odpowiedz

11

java.util.Date jest typ danych Data Java.

java.sql.Date jest opakowaniem JDBC dla dat SQL.

dwie są reprezentowane zupełnie inaczej wewnętrznie.

NET ma te same pojęcia (ale lepiej konwencja nazewnictwa do rozróżnienia tych dwóch moim zdaniem) z System.DataTime i System.Data.SqlTypes.SqlDateTime

+0

+1 dla edycji –

3

java.sql.Date

Cienka owijka wokół wartości milisekund że JDBC pozwala zidentyfikować to jako wartość daty SQL. Wartość milisekundy określa liczbę milisekund, które upłynęły od 1 stycznia 1970 roku 00: 00: 00.000 GMT.

3

java.sql.Date to podklasa (rozszerzenie) java.util.Date.
Co zmieniło się w java.sql.Date:

  1. toString() generuje inną reprezentację ciąg: yyyy-mm-dd
  2. statycznym valueOf(String) metody utworzenia Data z ciągiem z powyższym reprezentacji
  3. z pobierające i układem nastawczym na godziny, minuty, sekund są przestarzałe

Klasa java.sql.Date jest używana z JDBC i nie była przeznaczona dla JDBC. Część czasu, czyli godziny, minuty, sekundy i milisekundy, powinna wynosić zero ... ale nie jest to wymuszona przez klasę.

Powiązane problemy