venerdì 6 luglio 2012

[Java] Conteggio di date e giorni lavorativi

Innanzitutto lasciamo perdere le classi Calendar e GregorianCalendar, e usiamo solamente JodaTime.

La mia situazione di partenza è una data salvata in un database (class Date), a cui devo aggiungere alcuni giorni lavorativi.
Converto Date a DateTime (package JodaTime), ecco la funzione che fa a caso nostro, prendendo in considerazione solamente i giorni dal lunedì al venerdì:

    public DateTime addLavorativeDays (DateTime startDate, int lavorativeDays){
       
       
        while (lavorativeDays>0){
           
            System.out.println(startDate.getDayOfWeek());
           
            if (startDate.getDayOfWeek()<6){
               
                startDate = startDate.plusDays(1);
                lavorativeDays--;
            }
            else {
               
                startDate = startDate.plusDays(1);
            }
           
           
        }
        return startDate;
    }

Un controllo utile è sicuramente quello che date 2 date (inizio-fine) ci riporta il numero di giorni lavorativi:


    public int returnWeeklyDays(DateTime first, DateTime second){
       
       int days=0;
       
        while ((Days.daysBetween(first, second)).getDays()!=0){
           
            if (first.getDayOfWeek()<6){
               
                days++;
            }
            first = first.plusDays(1);
       
        }
       
        return days;
    }

Nessun commento:

Posta un commento