2010-01-20 10 views
7

HI Mi piacerebbe sapere perché ci sono due classi Date in due pacchetti diversi uno in java.util.Date e uno in java.sql.Date? Qual è l'uso di avere due classi Date?perché due classi data una in java.util.Date e java.sql.Date?

+4

Somtimes Penso di rendere la vita dei programmatori più difficile – stacker

+0

E poi c'è JODA ... –

+0

Ma si è saltato su 'java.util.Calendar'! Ironia della sorte, non c'è una sola di queste (classi JDK) che dovresti mai usare (a meno che non sia forzato). Joda-Time è l'unica API data/ora eseguita correttamente. –

risposta

11

java.util.Date è il tipo di dati Data di Java.

java.sql.Date è un wrapper JDBC per date SQL.

I due sono rappresentati in modo completamente diverso internamente.

.NET ha gli stessi concetti (ma una migliore convenzione di denominazione per differenziare i due a mio parere) con System.DataTime e System.Data.SqlTypes.SqlDateTime

+0

+1 per la modifica –

3

java.sql.Date

Un involucro leggero intorno ad un valore di millisecondo che consente a JDBC di identificarlo come un valore DATE SQL. Un valore in millisecondi rappresenta il numero di millisecondi trascorsi dal 1 ° gennaio 1970 00: 00: 00.000 GMT.

3

Il java.sql.Date è una sottoclasse (un'estensione) di java.util.Date.
Che cosa è cambiato in java.sql.Date:

  1. toString() genera una diversa rappresentazione di stringa: yyyy-mm-dd
  2. una statica valueOf(String) metodi per creare una data da una stringa con la rappresentazione sopra
  3. i getter e setter per ore, minuti e secondi sono deprecati

La classe java.sql.Date viene utilizzata con JDBC ed era destinata a non avere una parte del tempo, vale a dire ore, minuti, secondi e millisecondi dovrebbe essere zero ... ma questo non è forzato dalla classe.

Problemi correlati