Visualizzazione dei risultati da 1 a 9 su 9

Discussione: ciclo for con le date

  1. #1
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149

    ciclo for con le date

    Ciao,
    mi serve un aiuto in quanto devo contare il numero di giorni festivi dato un periodo.
    Dall'utente mi predo le date che seleziona esempio:dal 01-01-2010 al 30-09-2010
    in questo lasso di tempo devo estrapolare quanti giorni feriali ci sono....

    come devo fare?
    dove posso guardare per avere un esempio, una spiegazione....

    ho buttato giù questo ma non ne esco...

    codice:
         int iDayWeek =0;
         int iOre = 0;
         //dovrei ciclare dalla DATA_INIZIO alla DATA_FINE e contare i giorni settimanali....
         //e dovrei escludere i giornifestivi....
         
         iDayWeek =Calendar.DAY_OF_WEEK;
        //Se giornosettimana è divero da SABATO o DOMENCIA
        if((iDayWeek != Calendar.SATURDAY)||(iDayWeek != Calendar.SUNDAY)){
            iOre = iOre +iOre;
         }
    un aiutino, qualche suggerimento????...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: ciclo for con le date

    Originariamente inviato da arw
    Dall'utente mi predo le date che seleziona esempio:dal 01-01-2010 al 30-09-2010
    in questo lasso di tempo devo estrapolare quanti giorni feriali ci sono....

    come devo fare?
    Usando un Calendar (GregorianCalendar) e il suo add().
    Fai un ciclo in cui un Calendar va "avanti" di giorno in giorno finché non raggiunge la seconda data.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    ok, ci provo! Grazie

  4. #4
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    avrei ancora un piccolo problemino....
    ovvero sembra non leggere la data che va "avanti" come giorno settimanale...
    questo è il mio ciclo:
    codice:
     for (i=0; i<=b; i++){
            gc.add(gc.DATE, +1);
            strdataInizio= sdf.format( gc.getTime() );
            strdataFine= sdf.format( gc2.getTime() );
            if((gc.getTime().getTime()) <= (gc2.getTime().getTime())){
                //Se giornosettimana è divero da SABATO o DOMENCIA
                if ((gc.DAY_OF_WEEK != gc.SATURDAY)||(gc.DAY_OF_WEEK != gc.SUNDAY)){
                    iOre = iOre +1;
                }
            }
            else{//se la data inizio è = alla datafine termino il ciclo for.
                b=i;
            }
        }//chiudo for
    il problema è: gc.DAY_OF_WEEK resta sempre settato a 7

    sbaglio l'IF del se è diverso da sabato e domenica? come devo fare il test?
    ...

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da arw
    codice:
                if ((gc.DAY_OF_WEEK != gc.SATURDAY)||(gc.DAY_OF_WEEK != gc.SUNDAY)){
    Ma così stai lavorando solo sulle costanti ..... non sui campi interni del Calendar!
    Per essere chiaro: quelle sono solo le costanti e tra l'altro stai confrontanto una costante relativa ad un "campo" del Calender con la costante di un valore che un certo campo (il day of week) può restituire!

    Devi proprio prendere il valore del campo:

    gc.get(Calendar.DAY_OF_WEEK)

    E le costanti è bene referenziarle con il nome della classe .... non con un reference!


    Inoltre, nota che Calendar ha after() e before() e perlomeno da Java 5 è Comparable, quindi ha il compareTo.

    Puoi fare:

    if (!gc.after(gc2)) { // Se gc NON è dopo gc2 (detto al contrario: se gc è minore/uguale a gc2)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    ho risolto in questa maniera e cosi funziona!

    codice:
       if (gc.get(gc.DAY_OF_WEEK) != 1){
          if (gc.get(gc.DAY_OF_WEEK) != 7){
              iOre = iOre +1;
          }
       }

    Ancora un'ultima domanda....
    Cè un modo per riconoscere i giorni Festivi...intendo i giorni di festività durante l'anno?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da arw
    ho risolto in questa maniera e cosi funziona!

    codice:
       if (gc.get(gc.DAY_OF_WEEK) != 1){
          if (gc.get(gc.DAY_OF_WEEK) != 7){
              iOre = iOre +1;
          }
       }
    Usa sempre le costanti in Calendar! ... non 1 ... 7.
    E comunque potevi mettere 1 if con i due test in AND. Comunque così la logica è: "incrementa iOre se non è domenica E non è sabato".

    Originariamente inviato da arw
    Cè un modo per riconoscere i giorni Festivi...intendo i giorni di festività durante l'anno?
    No, non c'è niente nel framework che li "sa" e li può indicare. Tra l'altro ogni paese ha le sue festività particolari e tanto per dirne una, ad esempio la Pasqua non è un giorno fisso noto ma dipende da calcoli non esattamente banali.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    si l'immaginavo...
    ok, cerco in qualche modo di trovare come stabilire le festività nostre per poi scremarle dai giorni che ho incrementato(iOre) escludendo sabato e domenica.
    Perchè, per l'appunto, mi serve avere il Numero di Giorni Feriali, quindi non i sabati e domeniche e anche non le festività!

    Grazie mille!!


    ....eventuali suggerimenti, sono sempre ben accetti

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    l'unica festività che effettivamente cambia di anno in anno e la Pasqua. C'è in rete qualche algoritmo per determinare in quale giorno cada Pasqua - e sembrano funzionare degnamente. Per esempio: Pasqua - Java

    Quindi all'atto pratico ti interessa il lunedì dell'angelo. Infilerei tutti i giorni delle feste comandate in un'opportuna struttura dati e confronterei il giorno in questione con quanto contenuto nella tua struttura dati "feste comandate"
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.