Torna indietro   Hardware Upgrade Forum > Software > Programmazione

In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
Abbiamo assemblato e provato la Fiido Nomads Pro, evoluzione del modello da trekking già presente nella gamma, che migliora in tutto, soprattutto grazie al motore centrale, fluido e potente. Ottima app, costruzione solida e prezzo ok completano il quadro
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
Lo chassis in Ceraluminium è il cuore di questo notebook in edizione 2026, un modello pensato per garantire produttività con le tipiche applicazioni di produttività personale e capace di offrire un'autonomia di funzionamento lontano dalla presa di corrente da riferimento. Potenza, facilità di trasporto e costruzione robusta tutto in un notebook compatto.
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX 341QPXW14G è un monitor ultrawide da 34 pollici che porta la tecnologia QD-OLED di quinta generazione in un contesto principalmente orientato alla produttività. La qualità dell'immagine è elevatissima, il formato 21:9 è ideale per il multitasking e la dotazione di porte trasforma il monitor in un vero hub per Mac, PC e dispositivi mobili. Il limite principale è invece il refresh rate di soli 144 Hz, che lo allontana dai giocatori competitivi più esigenti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-06-2005, 17:57   #1
prazision
Senior Member
 
L'Avatar di prazision
 
Iscritto dal: Dec 2003
Messaggi: 458
[JAVA]confronto date con GregorianCalendar

Dunque devo confrontare una data che estraggo da un campo DATE di Oracle con la data di oggi per vedere quale viene prima (ovviamente le 2 date possono anche coincidere)
Ho pensato(più che altro è la prima cosa che ho trovato :-) ) di usare l'oggetto GregorianCalendar e il metodo compareTo dell'oggetto Date per il confronto.
Ho quindi usato il seguente codice per estrarre la data di oggi:

GregorianCalendar c=new GregorianCalendar() ;
Date data di oggi=c.getTime();

e il seguente codice per avere la data dal db:

String select="SELECT...";
Resultset rs = stmt.executeQuery(sel);
if(rs.next()) {
Date dataDb=rs.getDate("DATA");
}
GregorianCalendar c2=new GregorianCalendar() ;
c2.setTime(dataDb);
Date dataDaConfrontare=c2.getTime();


Ecco facendomi stampare le 2 date ottengo(in questo caso anche nel db c'è la data di oggi):
data di oggi: Jun 01 17:55:08 CEST 2005
data nel db: Jun 01 00:00:00 CEST 2005

il confronto col compareTo() risulta quindi impreciso in quanto da una parte ci sono minuti ecc. e dall'altra no(e in un caso come quello sopra ad esempio le 2 date non risulterebbero uguali per via dei minuti ecc.)-
ho quindi agito così:

Data di oggi:
GregorianCalendar c=new GregorianCalendar() ;
Date dataOggi=c.getTime();


Data db:
String select="SELECT...";
Resultset rs = stmt.executeQuery(sel);
if(rs.next()) {
Date dataDb=rs.getDate("DATA");
}
GregorianCalendar c2=new GregorianCalendar();
c2.setTime(dataDb);
int giorno2=c2.get(Calendar.DAY_OF_MONTH);
int anno2=c2.get(Calendar.YEAR);
int mese2=c2.get(Calendar.MONTH);
GregorianCalendar k2=new GregorianCalendar() ;
k2.set(anno2, mese2, giorno2);
Date dataDBfinale=k2.getTime();

Ok ora dataOggi e dataDBfinale sono confrontabili e tutto funziona; il codice non mi sembra però molto pulito e bello.

in particolare è questa parte(nel mio codice):
int giorno2=c2.get(Calendar.DAY_OF_MONTH);
int anno2=c2.get(Calendar.YEAR);
int mese2=c2.get(Calendar.MONTH);
GregorianCalendar k2=new GregorianCalendar() ;
k2.set(anno2, mese2, giorno2);

che mi lascia insoddisfatto ma d'altra parte non riesco a fare altro per avere due date confrontabili(tra laltro a me di confrontare minuti,secondi e ore non frega nulla)

Che potevo fare (sempre usando GregorianCalendar)???
C'è anche qualche oggetto diverso (e migliore) rispetto a GregorianCalendar??
Intanto che qualcuno risponde cerco anchio di migliorare il codice

ciao e grazie
prazision è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2005, 18:54   #2
orpheus
Member
 
Iscritto dal: Apr 2004
Messaggi: 252
Ciao ma non potevi usare direttamente il metodo before di Date, ti ritorna true se la data è anteriore di quella passata come argomento.
orpheus è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2005, 12:47   #3
prazision
Senior Member
 
L'Avatar di prazision
 
Iscritto dal: Dec 2003
Messaggi: 458
Quote:
Originariamente inviato da orpheus
Ciao ma non potevi usare direttamente il metodo before di Date, ti ritorna true se la data è anteriore di quella passata come argomento.
lunedì provo ma dubito funzion; infatti quando io estraggo la data dal db

if(rs.next()) {
Date dataDb=rs.getDate("DATA");
}
//e magari faccio anche il passo successivo:

GregorianCalendar c2=new GregorianCalendar();
c2.setTime(dataDb);
Date dataDBfinale=c2.getTime();
//


ottengo una data con minuti, secondi e ore posti a 0 e quindi il metodo before() immagino non possa confrontare tale data con quella di oggi

GregorianCalendar c=new GregorianCalendar() ;
Date dataOggi=c.getTime();
(oppure ottenuta usando direttamente l'oggetto Date)

infatti questa seconda data avrà anche i minuti ecc. e il confronto (in caso le date coincidano per quanto riguarda giorno mese e anno) non funzionerebbe.
io ho bisogno di avere 2 date che abbiano lo stesso valore per i minuti per le ore e per i secondi in modo da poter confrontare solo giorno mese e anno(anche perchè a me il resto non interessa)

grazie
prazision è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2005, 14:41   #4
prazision
Senior Member
 
L'Avatar di prazision
 
Iscritto dal: Dec 2003
Messaggi: 458
guardando il codice mi è sembrato meglio complicarlo ultriormente :-)

infatti(ho provato con mysql e non con oracle) sono giunto alla conclusione che è meglio scrivere così:

Data di oggi:
GregorianCalendar c=new GregorianCalendar() ;
c.set(Calendar.HOUR, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date dataOggi=c.getTime();


Data db:
String select="SELECT...";
Resultset rs = stmt.executeQuery(sel);
if(rs.next()) {
Date dataDb=rs.getDate("DATA");
}
GregorianCalendar c2=new GregorianCalendar();
c2.setTime(dataDb);
int giorno2=c2.get(Calendar.DAY_OF_MONTH);
int anno2=c2.get(Calendar.YEAR);
int mese2=c2.get(Calendar.MONTH);
GregorianCalendar k2=new GregorianCalendar() ;
k2.set(anno2, mese2, giorno2);
k2.set(Calendar.HOUR, 0);
k2.set(Calendar.MINUTE, 0);
k2.set(Calendar.SECOND, 0);
k2.set(Calendar.MILLISECOND, 0);
Date dataDBfinale=k2.getTime();

in questo modo son sicuro che entrambe le date avranno minuti,secondi ecc uguali a 0 e pertanto saranno confrontabili solo giorno mese e anno (prima invece settavo all'interno della data del db i minuti ecc allo stesso valore che avevano nella data odierna ma mi sembra rischioso)

la faccenda si complica...

cmq grazie
prazision è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Rivoluzione in arrivo per Xbox su PC: la...
Weekend di offerte Amazon: vano a ruba l...
Quanto costerà la serie Galaxy S2...
Blink ai minimi su Amazon: videocamere M...
Fire TV Stick 4K a 27,99€, Echo Dot a 29...
Samsung e Thierry Henry: svelata la nuov...
Schermo OLED e touch: il MacBook sta per...
Addio conversioni: Google Drive e Docs o...
Arriva il portale di Google che smascher...
Gli iPhone 18 Pro non convincono: Apple ...
NVIDIA torna su macOS con un driver non ...
Engwe ha un modello che è il SUV ...
Le migliori offerte del weekend Amazon: ...
Cina e UE, intesa sulle auto ibride: Pec...
2 lavatrici slim COMFEE’ a 255€ o 280€ s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v