Newsgroup: it.comp.java
Titolo: Operazioni Con le Date in Java

Ciao ragazzi vi espongo il mio problema!!!
Allora devo svilluppare un progettino per gestire una videoteca e devo
inserire un codice che mi permetta di capire se fissato un data al
momento del noleggio, al momento della riconsegna dopo 4 giorni il
cliente è moroso.
Adesso sto provando ad usare la classe Calendar:
    Calendar consegna=Calendar.getInstance();//consegna Data odierna
    dconsegna=consegna.get(consegna.DAY_OF_YEAR);
    Calendar noleggio=Calendar.getInstance();//noleggio
    noleggio.set(2006,02,26);//Setto la data in cui ho noleggiato il
film
    dnoleggio=noleggio.get(noleggio.DAY_OF_YEAR);
    System.out.println("Data Noleggio :"+dnoleggio);
    System.out.println("Data Consegna :"+dconsegna);
    //consegna.set(2006,3,2);
    if (dconsegna>dnoleggio+4)
    {
      System.out.println("Moroso" );
    }
    else
      System.out.println("OK");
Ma nn capisco perchè mi da dei valori sballati



 Ma nn capisco perchč mi da dei valori sballati
Forse perche' e' un controllo un po' troppo semplicistico e riduttivo?
E poi, cosa intendi con valori sballati? Certo, se metti consegna al 26 
febbraio e aumenti di 4 in quel modo, mi immagino ti troverai un 30 poco 
significativo.
Saluti
CarMas

per favore raga ditemi come devo fare con ste cavolo di date!!
Io anche stesso il controllo lo faccio tra dconsegna e dnoleggio che
come vedete sono la rappresentazione del "26-02-2006" in giorni a
partire dal primo gennaio, e anche stesso la funzione get di calendar
ritorna un intero, nn credo che sia una bestemmia informatica,
coreggetemi in caso e ditemi come devo fare

Per me basta aggiungere dei semplici controlli che però devi sbatterti
a scrivere a mano:
Basta che tu dica che se il noleggio viene effettuato in mesi quali :
1) Nov, Apr, Giu, Sett e la data di noleggio+4 è >= 30 allora si passa
al mese successivo e manualmlemte poi indicare quale è il mese
successivo
2) Feb e la data di noleggio+4 è >= 28 allora si passa al mese
successivo e manualmlemte poi indicare quale è il mese successivo
3) per tutti gli altri mesi se la data di noleggio+4 è >= 31 allora si
passa al mese successivo e manualmlemte poi indicare quale è il mese
successivo
4) devi dichiarare altresì che se il noleggio viene effettuato in
dicembre e la data del noleggio+ 4 è >= di 31 si passa oltre che al
mese, anche all'anno successivo
Per il resto non perderei ulteriore tempo a capire come funziona la
classe Calendar di Java !!!
On 2 Mar 2006 07:28:11 -0800, "Nemesi SoulKiller"


 ha scritto nel messaggio 
news:1141312311.7...@z34g2000cwc.googlegroups.com...


 Ma nn capisco perchč mi da dei valori sballati
Un uccellino mi dice che non consideri che il mese č zero-based. Leggi
la documentazione di Calendar.set().
Ma a parte questo il tuo č un metodo buggato di confrontare le date;
basta sforare l'anno solare e il tuo programma comincia a dare i numeri
del lotto.
Vedi di utilizzare i metodi add(), after() o before() della classe Calendar.

 classe Calendar di Java !!!
Ma si, non perdiamoci ulteriore tempo! Non abbia a venir fuori che serve
proprio a questo scopo.

 successivo e manualmlemte poi indicare quale è il mese successivo
Attenzione agli anni bisestili!!

Caro il mio amico "un giorno diventerò  Bill Gates" io ho espresso il
mio parere; sono fatto così, se una cosa non ce la ho me la faccio da
solo senza perder tempo a capire come sono fatte le cose
preconfezionate.
Non so come avvenga l'inserimento del giorno mese ed anno
nell'applicazione in questione ma, in qualsiasi modo si è sempre in
grado di catturare il giorno il mese e l'anno; basta una serie di
switch case oppure di if else per gestire le cose come ho decritto
precedentemente.
Poi ti ripeto, siamo su un forum, ognuno dice la sua e l'idea può
piacere o meno se piace bene altrimenti educazione prevede di evitare
sberleffi e cose simili.
Ah...dimenticavo, almeno io ho provato a dare una mano al nostro amico
Nemesi, tu , caro il mio genio, ti sei limitato a fare il saputo di
sto caXXo !!!
Ora rifletti e vedi di dare una mano piuttosto che criticare!



..il cobol ragazzi..un bel gestionale si fa in
cobol...imparatevi il COBOL se volete trattare dei dati....se
invece volete giocare....allora va bene continuate a farvi del male !
--  
Postato da Virgilio Newsgroup: scopri i nuovi gruppi 
Eros, foto e video a 
http://newsgroup.eros.virgilio.it


..il cobol ragazzi..un bel gestionale si fa in


 Ora rifletti e vedi di dare una mano piuttosto che criticare!
Anche le critica sono di aiuto: in questo caso si voleva
sottolineare di "...non rifare tutto da zero, come alcuni
suggeriscono, ma fai lo sforzo di imparare Calendar e annessi"
Ciao!
Roberto

 invece volete giocare....allora va bene continuate a farvi del male !
...a proposito di suggerimenti inutili... ;)

 invece volete giocare....allora va bene continuate a farvi del male !
Nello specifico, da ignorante di COBOL, quali vantaggi offre
relativamente alle date ? Sono sinceramente interessato anche
a tutte le altre considerazioni che vorresti fare in merito alla
superiorita' di COBOL.
--
Marco
*** Free account sponsored by SecureIX.com ***
*** Encrypt your Internet usage with a free VPN account from 
http://www.SecureIX.com
 ***

 sto caXXo !!!
Sei distratto. Segui il thread, vedrai che ho dato la mia risposta.

Raga Grazie lo stesso di tutto ma ho risolto da solo (anche grazie alle
vostre dritte).
Cmq ora funziona tutto ho aggiunto alla data di noleggio +4 attraverso
la funzione add di calendar
DataNoleggio.add(DataNoleggio.DAY_OF_YEAR,4) e poi attraverso la
funziona after ho fatto il confronto tra la data risultante e la data
odierna DataOdierna.after(DataNoleggio).
Va che un amore ;)
Tnx a tutti e alla prox
Sottolineo che amo il C++ ma sono costretto dall'uni a farlo in
JAVA(CHE ODIOOOOOOOOOOOOOOOO)

 JAVA(CHE ODIOOOOOOOOOOOOOOOO)
Mai affermare una cosa del genere qui! ;)
Ciao!
Roberto

 JAVA(CHE ODIOOOOOOOOOOOOOOOO)
Beh, grazie della precisazione ma questi sono decisamente fatti tuoi
personali.

 e poi attraverso la funziona after ho fatto il confronto 
Visto?
Tre istruzioni e hai risolto tutto, senza fare cose strane. :D
Saluti
CarMas

 writes:
NS> Sottolineo che amo il C++ ma sono costretto dall'uni a farlo in
NS> JAVA(CHE ODIOOOOOOOOOOOOOOOO)
Java pur  con i  suoi limiti  è coerente ed  elegante (vedi  il famoso
problema dell'ereditarietà  a diamante),  C++ è spesso  considerato "a
bag on  the side" rispetto  al C -  il K&R era meraviglioso,  una vera
palestra  per la  mente -  un carrozzone  cui continuano  ad attaccare
pezzi più o meno alla rinfusa.
D'altro canto si  è già discusso in altri thread come  la moda di Java
porti a risultati penosi, e non solo in ambito .edu .
(cond
        ((si-lamenta-che-in-java-non-fai-override-degli-operatori-p)
         (si-tratta-di-un-ciuchino))
         (t
         (probabile-illuminato)))
;; :) :) :) :) :)
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione

> DataNoleggio.add(DataNoleggio.DAY_OF_YEAR,4)
VV> La chiamata corretta è: DataNoleggio.add(Calendar.DATE, 4);
Ni.  No perché  se l'oggetto  è implementato  come si  deve  allora la
rappresentazione  del   tempo  deve  essere  coerente   tra  le  varie
rappresentazioni, Si perché comunque è dipendente dall'implementazione
e nessuno garantisce che sia una implementazione fatta come si deve.
Quello che offre la casa,  il GregorianCalendar disponibile con la 1.4
a naso(*) è  una "implementazione come si deve"  e riprende -ma guarda
che sorpresa :)- la gestione del tempo  in Unix (a 64 bit mi auguro, o
nel 2038 ci sarà da divertirsi).
(*) indizi: la presenza di un  campo time che conta il tempo a partire
dal 1 Gennaio 1970
VV> Non so per certo che problemi possa dare la tua chiamata, ma
VV> proverei a vedere cosa succede a chiamarla per il 30 dicembre...
Coi GregorianCalendar il medesimo risultato.
Mi sarebbe piaciuto  provare un calendario maya, ma il  JDK di Sun non
ha le classi :).


>>>>> "MT" == Marco Trevisan <trevisa...@NOSPAMemail.it> writes:
MT> Nello specifico, da ignorante di COBOL, quali vantaggi offre
MT> relativamente alle date ?
Credo molto pochi. Visto quanto ha incassato l'azienda per cui lavoro
per la storia dello Y2K.
MT> tutte le altre considerazioni che vorresti fare in merito alla
MT> superiorita' di COBOL.
Permette di utilizzare legioni di schiavi che compongono insieme
sempre gli stessi pezzetti di codice che di sicuro non daranno mai
uno stack overflow (non c'è lo stack).
Purtroppo la quantità di linee  di codice COBOL presenti sul pianeta è
mostruosa.


 Coi GregorianCalendar il medesimo risultato.
Veramente l'istanza concreta di Calendar *è* un GregorianCalendar,
ovviamente visto che il nostro calendario è quello Gregoriano.
Comunque dicevo un'altra cosa. Usando add(Calendar.DATE, nGiorni)
*sicuramente* funziona per qualsiasi data, usando invece
add(Calendar.DAY_OF_YEAR, nGiorni) non lo so. A scanso di equivoci
userei la prima. Tutto quà.

> Coi GregorianCalendar il medesimo risultato.
VV> Veramente l'istanza concreta di Calendar *è* un GregorianCalendar,
Nell'implementazione del JDK  e del JRE di Sun  sicuramente (è l'unica
classe concreta nota, almeno nella  1.4), e probabilmente di tutte che
mi sa che GregorianCalendar fa parte delle Core API.
VV> Usando add(Calendar.DATE, nGiorni)
VV> *sicuramente* funziona per qualsiasi data, usando invece
VV> add(Calendar.DAY_OF_YEAR, nGiorni) non lo so. A scanso di equivoci
VV> userei la prima. Tutto quà.
Ti ripeto,  capisco la tua  prudenza (c'è sulla  documentazione quindi
va)  e non  è sancita  alcuna "equivalenza"  tra i  vari campi  DATE e
DAY_OF*.
Ma d'altro  canto nelle regole di  add() si dice che  "a smaller field
rapresents  smaller  units of  time",  DATE -  che  è  un sinonimo  di
DAY_OF_MONTH, è più  grande di HOUR, non di  DAY_OF_WEEK. La frase del
manuale credo proprio  possa essere anche letta come  "tutti i DAY_OF*
esprimano  campi della stessa  grandezza", e  che quindi  la grandezza
aggiunta con add() sia sempre quella, questo mi fa pensare che ci sia
qualcosa di più rispetto alla prova sperimentale :)


 :).
Eh, che ho detto? quello è l'UTC (coordinated universal time).

> a caso" :).
VV> Eh, che ho detto? quello è l'UTC (coordinated universal time).
Ti mancava il dall'epoch :), tutto qui.
Saluti!
