codicefacile

Programmazione per TUTTI…

Classe PHP per Gestire tutte le DATE

Con questa classe possiamo agevolmente gestire senza nessun problema le date lavorandole secondo i nostri gusti…

per inizializzare la classe saranno sufficienti le seguenti linee di codice:

    <?php

        include ‘PATH_DESTINAZIONE/DatarioClass.inc’;

        $Datario = new DatarioClass();

        //da questo momento si ha a disposizione la classe e per utilizzarla è sufficiente…..

        //data e ora attuale in italiano

        $data=$Datario->data_ora_attuale(it);

        //somma giorni feriali…

        $data=$Datario->somma_giorni_feriali(01/11/2010,32);

?>

Per quanto riguarda il sottostante codice bisogna copiarlo ed incollare dove si vuole nella cartella del sito e chiamarlo "DatarioClass.inc".

<?php

//////////////////////////////////////////////////////////////////
// CLASSE PER LA LAVORAZIONE DI TUTTE LE DATE
// LE OPERAZIONI SONO: //
// SOMMA DEI GIORNI FERIALI SENZA FESTIVI E FESTIVITA’
// SOMMA DEI GIORNI AD UNA DATA DATA AMERICANA O ITALIANA
// TRASFORMA DATA DA ITA AD USA
// TRASFORMA DATA DA USA AD ITA
// RESTITUISCI DATA ODIERNA USA O ITA
// RESTITUSICI DATA E ORA ATTUALE USA O ITA
// //
// By F.M.
//////////////////////////////////////////////////////////////////

class DatarioClass
{
   
     //funzione per la somma dei giorni feriali che non conta i festivi sabato,domenica e festivita ad una data italiana
     public function somma_giorni_feriali($data,$lavorativi)
     {
         // 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;
         }
         //var_dump($array_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;
         }

         // Data da cui calcolare i giorni lavorativi
         $arrayData = explode("/", $data);
         $giorno = $arrayData[0];
         $mese = $arrayData[1];
         $anno = $arrayData[2];

         // Mi calcolo il timestamp della mia data di partenza
         $tsData = mktime(0,0,0,$mese,$giorno,$anno);

         // 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");
         $i = 0;
         while ($i<$lavorativi)
         {
             $giorno_data = date("w",$tsData); //verifico il giorno: da 0 (dom) a 6 (sab)
             $mese_giorno = date(‘m-d’,$tsData); // confronto con gg sempre festivi
             // Infine verifico che il giorno non sia sabato,domenica,festivo fisso o festivo variabile (pasquetta);
             if ($giorno_data !=0 && $giorno_data != 6 && !in_array($mese_giorno,$giorniFestivi) &&             !in_array($tsData,$array_pasquetta) )
             {
             $i++;
             }
         $tsData=$tsData+86400;
         }
         $tsData=$tsData-86400;
         $giorno_conclusivo = date(‘d/m/Y’,$tsData);
        return $giorno_conclusivo;       

 }

//funzione per sommare giorni ad una data senza considerare festività
public function somma_giorni($data,$tipo,$giorni)
{
if ($tipo=="it")
{
     $arrayData = explode("/", $data);
     $giorno = $arrayData[0];
     $mese = $arrayData[1];
     $anno = $arrayData[2];
         $t = mktime( 1, 1, 1, $mese, $giorno, $anno );
         $t = $t + $giorni * 60 * 60 * 24;
     $data_sommata= date( ‘d/m/Y’, $t );
  }
else
{
     $arrayData = explode("-", $data);
     $giorno = $arrayData[2];
     $mese = $arrayData[1];
     $anno = $arrayData[0];
     $t = mktime( 1, 1, 1, $mese, $giorno, $anno );
     $t = $t + $giorni * 60 * 60 * 24;
     $data_sommata= date( ‘Y-m-d’, $t );
}
    return $data_sommata;
}

//funzione per trasformare data italiana in americana
public function trasforma_data_usa($data)
{
$arrayData = explode("/", $data);
$giorno = $arrayData[0];
$mese = $arrayData[1];
$anno = $arrayData[2];
$d=array($anno,$mese,$giorno);
$data_trasformata_usa=implode("-",$d);
    return $data_trasformata_usa;

 }

//funzione per trasformare data americana in italiana
public function trasforma_data_it($data)
{
$arrayData = explode("-", $data);
$giorno = $arrayData[2];
$mese = $arrayData[1];
$anno = $arrayData[0];
$d=array($giorno,$mese,$anno);
$data_trasformata_it=implode("/",$d);
return $data_trasformata_it;

 }

//funzione che restituisce data odierna
public function data_attuale($tipo)
{
if ($tipo=="usa")
{
  $data_usa=date(‘Y-m-d’);
return $data_usa;
}
else if ($tipo=="it")
{
$data_it=date(‘d/m/Y’);
return $data_it;

 }

}

//funzione che restituisce data e ora odierna
public function data_ora_attuale($tipo)
{
if ($tipo=="usa")
{
  $data_usa=date(‘Y-m-d H:i’);
return $data_usa;

}
else
{
global $data_it;
$data_it=date(‘d/m/Y H:i’);
return $data_it;

 }

}

}

?>

Tale classe verrà comunque aggiornata di volta in volta per possibili ulteriori funzioni….

A presto.

Annunci

Navigazione ad articolo singolo

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: