2010-01-20 3 views
7

HI Je voudrais savoir pourquoi il y a deux classes de dates dans deux paquets différents, l'un en java.util.Date et l'autre en java.sql.Date? Quelle est l'utilité d'avoir deux classes Date?pourquoi deux classes de dates une dans java.util.Date et java.sql.Date?

+4

Parfois, je pense à rendre la vie des programmeurs plus difficile – stacker

+0

Et puis il y a JODA ... –

+0

Mais vous avez sauté sur java.util.Calendar! Ironiquement, il n'y en a pas un seul (classes JDK) que vous devriez utiliser (sauf si vous êtes forcé). Joda-Time est la seule API date/heure effectuée correctement. –

Répondre

11

java.util.Date est le type de données Java.

java.sql.Date est un wrapper JDBC pour les dates SQL.

Les deux sont représentés complètement différemment en interne.

.NET a les mêmes concepts (mais une meilleure convention de nommage pour différencier les deux à mon avis) avec System.DataTime et System.Data.SqlTypes.SqlDateTime

+0

+1 pour l'édition –

3

java.sql.Date

Une enveloppe mince autour d'une valeur milliseconde que permet à JDBC d'identifier cela comme une valeur SQL DATE. Une valeur en millisecondes représente le nombre de millisecondes écoulées depuis le 1er janvier 1970 00: 00: 00.000 GMT.

3

La java.sql.Date est une sous-classe (une extension) de java.util.Date.
Ce qui a changé dans java.sql.Date:

  1. toString() génère une représentation de chaîne différente: yyyy-mm-dd
  2. une valueOf(String) méthodes statiques pour créer une date à partir d'une chaîne avec la représentation ci-dessus
  3. Les getters et setter pendant des heures, minutes et les secondes sont obsolètes

La classe java.sql.Date est utilisée avec JDBC et ne devait pas avoir une partie de temps, c'est-à-dire heures, minutes, secondes et millisecondes, doit être zéro ... mais ce n'est pas appliqué par la classe.

Questions connexes