Newsgroup: it.comp.java
Titolo: Perchè Date è deprecated?

Scusate ragazzi, sempre le solite curiosità :)
Ho pensato per un po' al motivo per cui Date è deprecato (tra l'altro
anche la java.sql.Date, che mi sembra ancor più strano) e perchè il
tutto è stato sostituito dai vari Calendar eccetera.
Qualcuno mi ha detto perchè Calendar è più completo, ma allora per amor
di compatibilità, non era meglio estendere la classe Date piuttosto di
fare questo casino?
I veri motivi sono altri? Se qualcuno mi risponde, grazie mille come al
solito :)
-- 
Fra' Ciuzzi

 fare questo casino?
Come la vorresti esattamente ?
Vorresti aggiungere un parametro Calendar (necessario per decidere
in che anno/mese/giorno si e') alle varie getYear, getMonth ... ?
--
Marco

Come ti hanno già detto la classe Date rappresenta un'istante nel
tempo. Il fatto che questo istante corrisponda al 13 giugno 2005 ore 14
etc... dipende dal calendario, dal fuso orario etc...
La scelta di Java è stata quella (formalmente corretta) di separare
l'informazione relativa all'istante nel tempo (classe Date) dalla sua
rappresentazione (classe Calendar).
Detto questo posso aggiungere che personalmente trovo l'utilizzo delle
classi Date e  Calendar un po' complesso, ma probabilmente non si
poteva fare di meglio. Questa complessità deriva in parte anche
dall'origine delle classi: Calendar è nata ben prima del linguaggio
Java. Non sto dicendo una cavolata: la classe Calendar ha il copyright
di Taligent e IBM (potete vederlo aprendo il sorgente): Taligent era un
consorzio sostenuto principalmente dall'IBM, nato all'inizio degli anni
'90 che aveva come scopo lo sviluppo di librerie riusabili di
componenti OO. All'epoca Java non esisteva nemmeno. Quando è nato
Java, probabilmente su spinta dell'IBM stessa, la classe è stata
riscritta in Java e inglobata nelle sue librerie.

 poteva fare di meglio. 
Personalmente sono contento di essere avvisato dei potenziali problemi
che i miei programmi andranno ad affrontare. Ti impone di riflettere
su quale sia il primo giorno della settima in una installazione con
locale us quando la tua applicazione di gestione del personale
deve seguire le regole del calendario italiano.
Dopo e' chiaro, dipende dal target della tua applicazione, dal
controllo che hai sui sistemisti ...
--
Marco

 riscritta in Java e inglobata nelle sue librerie.
Ciao mucho interessante la storia del copyrigth
Tornado a Date , chiariamo la classe non mi pare deprecata lo sono i suoi
metodi getyear ecc
Molti trovano macchinoso l'ambaradan delle date e questo comunque ' un male.
A me pare comunque fatto bene.
La cosa fondamentale e' che sul web e in generale su scala globale non
sappiamo il fuso orario del client.
Da qui il concetto ti TimeZzone e la giusta separazione dell "Istante"
tramite la classe Date e di un Calendar che e' un tool per manipolare
l'istante.
java.sql.date e' na cagata e nonla uso +, mi pare che ha solo un campo
inutile in +
Timespamp la uso ogni tanto.
Il pateraccchio imho non lo hanno fatto i javisti ma i papi gregorio o chi
realmente ha fatto il calendario.
L'impressione e' che prima di suddividere i giorni si sia scolato una
bottiglia di Vodka, mesi di 30, 31,28 29 mahhhhhh
anche 24 ore per un giorno 60 minuti 60 secondi 1000 millensimi
boooooo un matto
ciao Nicola
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Come la vorresti esattamente ?
Io volevo solo sapere perchè, non ho detto che la voglio in una tal maniera :)
-- 
Fra' Ciuzzi

 ha scritto:
Quindi in parole povere: 
1) In Java e ci hanno messo dentro la classe Date sia per identificare le
Date che per rappresentarle
2) Si sono accorti che le due cose erano diverse e spinti da uno standard
consolidato stanno cercando di mettere le cose a posto.
In parole povere dovrebbe essere così se ho capito bene giusto?
-- 
Fra' Ciuzzi

 
Un oggetto Date viene interpretato da un oggetto Calendar, sono IMHO entrambi necessari,
prova questo programma:
import java.util.Date;
import java.util.TimeZone;
import java.util.Calendar;
import java.util.Locale;
import java.text.DateFormat;
public class DateOCalendar {
   public static void main(String[] args) {
     Calendar us=Calendar.getInstance(Locale.US);
     Calendar miamacchina=Calendar.getInstance();
     Date primo2004=new Date(Date.parse("01/01/2005"));
     us.setTime(primo2004);
     miamacchina.setTime(primo2004);
     if (us.get(Calendar.WEEK_OF_YEAR)==miamacchina.get(Calendar.WEEK_OF_YEAR))
       System.out.println("tutto OK!");
     else
       System.out.println("Che strano !?!!");
   }
}
--
Marco

 prova questo programma:
mi risulta "Che strano !?!!", cmq a me interessava sapere perchè (la ragione
storica) alcuni metodi (quasi tutti) di Date sono deprecati, la risposta di
Bingo penso mi possa bastare, grazie mille anche a te cmq :) 
Poi che servano sia Date che Calendar sono d'accordo, altrimenti tutto Date
sarebbe deprecato (come ho detto io nel post iniziale sbagliando).
-- 
Fra' Ciuzzi