2010-01-20 6 views
7

HI Мне нравится знать, почему существуют два класса Date в двух разных пакетах один в java.util.Date и один в java.sql.Date? Использование двух классов Date?почему два класса даты один в java.util.Date и java.sql.Date?

+4

Когда-нибудь я думаю, чтобы сделать жизнь программистов более сложной – stacker

+0

А потом есть JODA ... –

+0

Но вы пропустили 'java.util.Calendar'! По иронии судьбы, нет ни одного из них (классы JDK), которые вы когда-либо использовали (если только не принудительно). Joda-Time - это единственный API с датой/временем, сделанный правильно. –

ответ

11

java.util.Date - это тип данных данных Java.

java.sql.Date - это оболочка JDBC для дат SQL.

Эти два варианта представлены полностью по-разному.

.NET имеет одни и те же понятия (но лучше именовании различать два, на мой взгляд) с System.DataTime и System.Data.SqlTypes.SqlDateTime

+0

+1 для редактирования –

3

java.sql.Date

тонкая обертка вокруг значения миллисекунды что позволяет JDBC идентифицировать это как значение DATE SQL. Значение миллисекунды представляет собой миллисекунды, прошедшие с 1 января 1970 года 00: 00: 00.000 GMT.

3

java.sql.Date является подклассом (расширение) java.util.Date.
Что изменилось в java.sql.Date:

  1. toString() порождает другую строковое представление: yyyy-mm-dd
  2. а статические valueOf(String) методы для создания даты из строки с выше представления
  3. методы получения и сеттер в течение нескольких часов, минут и секунды устарели

Класс java.sql.Date используется с JDBC, и он должен был не иметь временная часть, то есть часы, минуты, секунды и миллисекунды должны быть равны нулю ... но это не в принудительном исполнении классом.

Смежные вопросы