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

    ok a voi : calcolo giorni lavorativi tra due date [escludere domeniche e festivi]

    Ciao a tutto il forum ... quesito per i geni-folli [e qui non mancano ]

    allora vado subito al quesito :

    devo assolutamente trovare il totale dei giorni lavorativi tra 2 date
    nel totale devo escludere i festivi(*) e le domeniche



    festivi : -> giornate festive nazionali [prestabilite]
    festivi locali -> giornate festive del paese locale [prestabilite]
    domeniche

    devo tenere conto inoltre di :
    - mesi bisestili
    - giorni del mese

    1° esempio [per chiarire il tutto ]:

    1a data : 28/10/2006 [sabato]
    2a data : 31/10/2006 [martedi]

    28 - sabato , lavorativo [1 giorno]
    29 - domenica, festivo [escluso]
    30 - lunedi, lavorativo [1 giorno]
    31 - martedi, lavorativo [1 giorno]

    totale giorni di ferie 3 giorni



    2° esempio [per chiarire il tutto ]:

    1a data : 28/10/2006 [sabato]
    2a data : 31/10/2006 [martedi]

    28 - sabato , lavorativo [1 giorno]
    29 - domenica, festivo [escluso]
    30 - lunedi, festivo locale [escluso] [si presuppone che questo gg sia indicato in un array]
    31 - martedi, lavorativo [1 giorno]

    totale giorni di ferie 2 giorni


    spero che gli 'esempi' siano abbastanza chiari

    preciso che ho usato fino adesso la func:

    Codice PHP:
    function ContaFerie($prima_data$seconda_data) { 
    differenza_in_giorni=(int)(abs(strtotime ("$prima_data") - strtotime ("$seconda_data"))/86400 +1); 

    // +1 equivale all'aggiunta del giorno intero
    //86400 è il numero di secondi di una giornata (60*60*24)

        
    return $tot $differenza_in_giorni


    // ho cercato di effettuare calcoli ttramite array ma niente 
    ma non va assolutamente poichè insufficente

    vi prego ....AIUTOOOOOOOOOOOOOOOOOOO!!

    vero .. offro una birra [via postpay] a chi mi risolve sto benedetto ..zzo.

    ciao e Grazie in anticipo a tutti.
    Quello che noi osserviamo non è la natura in se stessa, ma la natura esposta al nostro metodo di interrogazione.Werner Heisenberg

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Questa considera festivi anche i sabati. Se non li consideri tali togli $giorno_data != 6 dall'if.
    Se tu o altri trovate dei bug (cosa molto probabile) fatemi sapere.
    Codice PHP:
    function giornilavorativi($dataInizio,$dataFine)
    {
        
    // Calcolo del giorno di Pasqua fino all'ultimo anno valido
        
    for ($i=2006$i<=2037$i++) {
        
    $pasqua date("Y-m-d"easter_date($i));
        
    $array_pasqua[] = $pasqua;
        }

        
    // Calcolo le rispettive pasquette
        
    foreach($array_pasqua as $pasqua){
        list (
    $anno,$mese,$giorno) = explode("-",$pasqua);
        
    $pasquetta mktime (0,0,0,date($mese),date($giorno)+1,date($anno));
        
    $array_pasquetta[] = $pasquetta;
        }
        
        
    // questi giorni son sempre festivi a prescindere dall'anno
        
    $giorniFestivi = array("01-01",
                               
    "01-06",
                               
    "04-25",
                               
    "05-01",
                               
    "06-02",
                               
    "08-15",
                               
    "11-01",
                               
    "12-08",
                               
    "12-25",
                               
    "12-26",
                               );

            
    $lavorativi 0;

            for(
    $i strtotime($dataInizio); $i<=strtotime($dataFine); $i strtotime("+1 day",$i))
            {
               
    $giorno_data date("w",$i); //verifico il giorno: da 0 (dom) a 6 (sab)
               
    $mese_giorno date('m-d',$i); // confronto con gg sempre festivi
                 // Infine verifico che il giorno non sia sabato,domenica,festivo fisso o festivo variabile (pasquetta);        
                
    if ($giorno_data !=&& $giorno_data != && !in_array($mese_giorno,$giorniFestivi) && !in_array($i,$array_pasquetta) )
                {
                
    $lavorativi++;
                }

            }

    return 
    $lavorativi;
    }

    echo 
    giornilavorativi("2006-12-22","2007-01-03"); // 6 

  3. #3
    lo testero' pomeriggio ,,, Grazie nicola75ss
    Quello che noi osserviamo non è la natura in se stessa, ma la natura esposta al nostro metodo di interrogazione.Werner Heisenberg

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.