|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
[JAVA] Confronto tra date
allora, sto gestendo una serie di appuntamenti e relativo storico, solo che mi serve uno storico 2semestrale", ovvero negli ultimi 6 mesi.
ora dato che sono sveglio dalle 9 di ieri mattina ![]() ripeto a me servono gli appuntamenti negli ultimi sei mese, ad esempio 1 appuntamento luglio 2009 2 appuntamento agosto 2009 1 appuntamento settmbre 2009 ne inserisco 1 a marzo 2010 mi deve cancellare tutti tranne quelli nei 6 mesi precedenti a marzo, ovvero agosto e luglio. grazie mille ![]()
__________________
My gaming placement |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ehm, sì, ma la domanda qual'è?
![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
come verifico se un appuntamento e a 6 (o più) mesi di distanza???
a me servirebbe un metodo di confronto che passategli 2 date mi dice se sono distanti oltre i 6 mesi
__________________
My gaming placement |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Si, ma nel senso: come sono memorizzate le date? usi qualche oggetto apposito, le hai come stringa, altro?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
stringhe....e ho un vettore che identifica i mesi
__________________
My gaming placement |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
![]() Comunque, per quello che vale, e in base a quello che mi hai detto (e che io ho capito...): Quote:
![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Per questo volevo sapere che tipi di dato manipoli e come sono organizzati.... Ho capito che sei fuso dal sonno ma fai uno sforzo e prova a descrivere bene: 1) formato dell'oggetto String che descrive una data. 2) cosa infili dentro il Vector 'dei mesi', come l'hai chiamato tu prima ![]() Alternativa: cacciati otto buone ore di sonno e quando ti sveglierai liquiderai la questione in due minuti ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
cmq PURTROPPO le date hanno un formato "strano": giornoDellaSettima giorno mese anno dove giorno della settimana è: e mese è: String[] mesi = { "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" }; ammetto che è una soluzione ORRIBILE... la data viene fuori del tipo lunedì 16-luglio-2009
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
come mi piace trovare soluzioni alternative
![]() per ora ho fermato lo storico a 30 appuntamenti...appena sono di nuovo READY ripenso ai 6 mesi
__________________
My gaming placement |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Io strutturerei meglio le date con quello che offre Java in modo da sfruttare il compareTo
![]() E poi ad ogni inserimento di nuovo appuntamento mi calcolo la data esatta di 6 mesi prima e ricerco ed elimino le date che sono più piccole di questa calcolata.
__________________
![]() |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
se fosse possibile si....ma non posso modificare le date (il formato)
__________________
My gaming placement |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Per cominciare, due metodi per estrarre il mese e l'anno da una data:
metodo leggiMese Codice:
// supposizioni: // in una stringa di una data ci sono sempre due caratteri '-' // il mese è sempre tra il primo carattere '-' e il secondo carattere '-' String leggiMese(String data) { int startIndex = data.indexOf('-') + 1; int endIndex = data.lastIndexOf('-'); return data.substring(startIndex,endIndex); } Codice:
// supposizioni: // in una stringa di una data ci sono sempre due caratteri '-' // l'anno è sempre dopo il secondo carattere '-'; String leggiAnno(String data) { int startIndex= data.lastIndexOf('-'); return data.substring(startIndex+1); }
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 07-07-2009 alle 08:21. |
![]() |
![]() |
![]() |
#14 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...un metodo di confronto tra due date...restituisce un intero che rappresenta la discrepanza in giorni...
Codice:
public int dateDifference() { Date from = null; try { from = new SimpleDateFormat("dd/MM/yyyy").parse("10/11/2007"); } catch (ParseException e) { e.printStackTrace(); } from.getTime(); Date to = null; try { to = new SimpleDateFormat("dd/MM/yyyy").parse("10/12/2007"); } catch (ParseException e) { e.printStackTrace(); } long diff = to.getTime()-from.getTime(); return (diff / (1000L*60L*60L*24L)+1); } |
![]() |
![]() |
![]() |
#15 | ||
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
Quote:
__________________
My gaming placement |
||
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
risolto così:
Codice:
private void aggiornaListaAppuntamenti() { Appuntamento ultimo = this.appuntamenti.get(0); Vector<Appuntamento> elementiDaTogliere = new Vector<Appuntamento>(); for (int i = 1; i < this.appuntamenti.size(); ++i) { Appuntamento temp = this.appuntamenti.get(i); if (ultimo.getAnno().equalsIgnoreCase(temp.getAnno())) { if (this.getIndiceMese(ultimo) < 6) continue; else if ((this.getIndiceMese(ultimo) - this.getIndiceMese(temp)) < 6) continue; else elementiDaTogliere.add(temp); } else { if (this.getIndiceMese(ultimo) > 6) elementiDaTogliere.add(temp); else if (((12 + this.getIndiceMese(ultimo)) - this .getIndiceMese(temp)) < 6) continue; else elementiDaTogliere.add(temp); } } for (Appuntamento appu : elementiDaTogliere) { this.appuntamenti.remove(appu); } } private int getIndiceMese(Appuntamento appuntamento) { String[] mesi = { "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" }; for (int i = 0; i < mesi.length; ++i) { if (appuntamento.getMese().equals(mesi[i])) return i; } return -1; } ora mi succede una cosa strana...il cliente che contiene questa lista di appuntamenti viene serializzato e salvato su file, ma quando lo ripristino mi carica tutti i dati tranne questa lista di apppuntamenti O_O sto dimenticando qualche passaggio?
__________________
My gaming placement |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:29.