Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] Calendar in Java

    Salve a tutti,
    La mia domanda riguarda il metodo addGiorni() di una mia classe calendar fatta senza usare quella già presente nelle api di java.
    Non so come aggiungere giorni ad una data. Non posso usare la classe Calendar predisposta già dal java!!! troppo facile sennò
    per ora sono arrivato al seguente codice
    codice:
    public Data addGiorni(int giorni) {
                giorno+=giorni;
                if (mese == 1 || mese == 3 || mese == 5 || mese == 7
                        || mese == 8 || mese == 10 || mese == 12) {
                    if (giorno > 31) {
                        mese++;
                        giorno = 1;
                        if (mese > 12) {
                            mese = 1;
                            anno++;
                        }
                    }
                } else {
                    if (mese == 2) {
                        if (isBisestile(anno)) {
                            if (giorno > 29) {
                                giorno = 1;
                                mese++;
                            }
                        } else {
                            if (giorno > 28) {
                                giorno = 1;
                                mese++;
                            }
                        }
                    } else {
                        if (giorno > 30) {
                            giorno = 1;
                            mese++;
                        }
                    }
                }
            
            return new Data(giorno, mese, anno, super.getNazionalità());
        }
    il problema è che se aggiungo un numero di giorni tali da superare anche il mese successivo non funziona.
    per esempio
    18/12/2012
    se sommo 45 giorni al 18 vado a finire a febbraio,
    18+45=01/02/2013 mi stampa 01/01/2013 e non mi incrementa il mese
    Grazie in Anticipo a tutti quelli che mi risponderanno

  2. #2
    ciao penso che il problema sta nel fatto che tu la variabile giorno la sommi coi giorni da incrementare e se superano il numero dei giorni del mese la riporti ad 1 tralasciando i giorni d'avanzo.

  3. #3
    Ciao grazie della risposta. Ma quindi cosa mi consiglieresti di fare ? magari anche un metodo diverso da quello che ho implementato io.

  4. #4
    ti serve solo un po più di matematica, io li ho chiamati giorni d'avanzo quindi facciamo una variale avanzo e quindi fai

    if giorno > 31 {
    avanzo = giorno - 31;
    mese++;

    e poi controlli anche avanzo quanto vale, se sta dentro al mese successivo o se devi rifare la sottrazione e aumentare un altro mese e poi alla fine quando stai dentro ai giorni del mese setti la variabile giorno col valore di avanzo.

    detto cosi sembra chissà che cosa, ma ti serve un caffe, 5 minuti di riposo, e poi il codice si scrive da solo è semplicissimo credimi

  5. #5
    Grazie della risposta ho risolto trasformando tutto in giorni sommando e poi ritrasformando tutto in data comunque Grazie davvero dell'Aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.