Autore Topic: Le date mi fanno impazzire  (Letto 2052 volte)

Offline dami7net

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
  • Sistema operativo:
    Mac OSX
Le date mi fanno impazzire
« il: 04 Aprile 2010, 20:28:19 CEST »
0
Ciao a tutti.
Ho un problema sicuramente banale ma dal quale non riesco ad uscire! Ve lo spiego in breve.
Devo calcolare la distanza tra due date, ossia tra una data selezionata ed il primo giorno dell'anno.
Ho utilizzato per questo un oggetto DatePicker, e questo è il codice dell'activity che fa partire quella che poi userà i valori!
Codice (Java): [Seleziona]
        DatePicker data =  (DatePicker) findViewById(R.id.ScegliData);
        Spinner orario =  (Spinner) findViewById(R.id.ScegliOra);
        int anno = 0;
        int giorno = 0;
        int mese = 0;
        int ora = 0;
        GregorianCalendar gc = new GregorianCalendar();
        anno = data.getYear();
        giorno = data.getDayOfMonth();
        mese = data.getMonth();
        ora = orario.getSelectedItemPosition();
        gc.set(anno, mese, giorno);
        Intent intent = new Intent(this, VisualizzaRisultati.class);
        Bundle b = new Bundle();
        b.putInt(ANNO, gc.get(Calendar.YEAR));
        b.putInt(MESE, gc.get(Calendar.MONTH));
        b.putInt(GIORNO, gc.get(Calendar.DAY_OF_MONTH));
        b.putInt(ORA, ora+1);
        intent.putExtras(b);
        startActivity(intent);

La seconda activity prende il valore e lo calcola.
In pratica l'algoritmo deve contare i giorni di distanza dal primo gennaio, moltiplicarli per 20 (ogni giorno vale 20) ed aggiungerci un valore pari a quello del parametro "ORA" passato. Questo è l'algoritmo che ho scritto.
Codice (Java): [Seleziona]
       GregorianCalendar data2 = new GregorianCalendar();
       GregorianCalendar data1 = new GregorianCalendar();
       data2.set(anno,mese+1,giorno);
       data1.set(anno, 1, 1);
       long giorniDiff = (data2.getTimeInMillis()-data1.getTimeInMillis())/ 86400000;
       long NumConcorso = giorniDiff*20;
       if ((ora>=0) && (ora<=20)){
            NumConcorso = NumConcorso + ora;
       } else if (ora>20){
            NumConcorso = NumConcorso + 20;
       }
       int numero = (int) NumConcorso;
       return numero;  

Ovviamente non mi funziona (altrimenti non sarei qui a chiedere aiuto) perchè presenta diversi casini quando si tratta di analizzare i cambi di mese!! Qualcuno può dare un occhio??? Grazie!
« Ultima modifica: 15 Maggio 2010, 17:37:27 CEST da JD »

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:Le date mi fanno impazzire
« Risposta #1 il: 04 Aprile 2010, 22:03:19 CEST »
0
io di solito uso un Calendar normale prova con sti metodi
Codice (Java): [Seleziona]
Calendar data_attuale = Calendar.getInstance();   // da il tempo di oggi, anno mese ecc.. con precisione al millisecondo  

long data_attuale_millisecondi = data_attuale.getTimeInMillis();  // ti da il tempo attuale in millisecondi dal 1 gennaio 1970


Calendar una_data = Calendar.getInstance();
una_data.set( Calendar.YEAR, 2010 );
una_data.set( Calendar.MONTH, 4 ); // eccetera vedi tu i metodi da usare per i vari campi (fields)

long una_data_millisecondi = una_data.getTimeInMillis();
long differenza_tempo_millisecondi = data_attuale_millisecondi - una_data_millisecondi ;

differenza_tempo_millisecondi / 86400000 // sono i giorni di differenza;
 

l'ho scritto di getto testalo e fammi sapere
:)          :P    --->|^.^|<---     ;)         :D 

Offline dami7net

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
  • Sistema operativo:
    Mac OSX
Re:Le date mi fanno impazzire
« Risposta #2 il: 04 Aprile 2010, 22:26:13 CEST »
0
Grazie!!!
Ci stavo arrivando anche io, perchè non riuscivo a capire come funzionava in quanto avevo dei problemi con i giorni a cavallo dei mesi...
Con la classe Calendar invece non ho sto problema! :D
Grazie!

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:[Risolto] Le date mi fanno impazzire
« Risposta #3 il: 04 Aprile 2010, 22:35:27 CEST »
0
mi fa piacere! ciao!!! ;)
:)          :P    --->|^.^|<---     ;)         :D 

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
Re:Le date mi fanno impazzire
« Risposta #4 il: 25 Maggio 2010, 13:03:25 CEST »
0
Mi accodo al post per chiedere se in un date picker è possibile cambiare MM/GG/AAAA in GG/MM/AAAA ?


grazie  ;-)
Marco