Verifica giornate festive

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
vado avanti con le mie funzioni sulle date
La prossima funzione verifica se un giorno è festivo: restituisce true o false in base al girono passato come parametro

Il parametro $data non è obbligatorio, se omesso la funzione restituisce l'array con le festività

Non ho considerato il Sabato ma come al solito a voi le eventuali modifiche

PHP:
<?php

function festivita($data = false) {
    // creo un array con le festivita
    $array_festivita = array(
        "01-01" => "Mio compleanno",
        "01-06" => "Epifania",
        "04-25" => "Festa della liberazione",
        "05-01" => "Festa dei lavoratori",
        "06-02" => "Festa della repubblica",
        "08-15" => "Ferragosto",
        "11-01" => "Festa di tutti i santi",
        "12-08" => "Festa dell'immacolata",
        "12-25" => "Natale",
        "12-26" => "Giorno di Santo Stefano"
    );
    // se non ho la data come argomento restituisco l'array
    if (!$data) {
        return $array_festivita;
    }
    // creo un array con la data ricevuta
    $exp = explode('-', $data);
    // verifico la data
    if (!checkdate($exp[1], $exp[2], $exp[0])) {
        // data non valida esco
        return "Data non valida!";
    }
    // time della data
    $timestamp = mktime(0, 0, 0, $exp[1], $exp[2], $exp[0]);
    // verifico se il giorno della settimana è Domenica con date('w') (0->Dom 6->Sab)
    if (date('w', $timestamp) == 0) {
        // Se = a 0 è festivo ! esco
        return true;
    }
    // altrimenti creo una variabile per la ricerca nell array
    $mesegiorno = $exp[1] . "-" . $exp[2];
    // ciclo l'array delle festivita
    foreach ($array_festivita as $key => $value) {
        // se trovo corrispondenza 
        if ($key == $mesegiorno) {
            // è festivo esco
            return true;
        }
    }
    // non è festivo esco
    return false;
}

// senza parametro restituisce un array
$res = festivita();
var_dump($res);

// con la data restituisce true se festivo false se lavorativo
$res = festivita("2012-12-24");
var_dump($res);
?>

Se ho dimenticato e/o sbagliato qualcosa segnalate pure :byebye:
 
Ultima modifica:

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ciao,
vado avanti con le mie funzioni sulle date
La prossima funzione verifica se un giorno è festivo: restituisce true o false in base al girono passato come parametro

Il parametro $data non è obbligatorio, se omesso la funzione restituisce l'array con le festività

Non ho considerato il Sabato ma come al solito a voi le eventuali modifiche

PHP:
<?php

function festivita($data = false) {
    // creo un array con le festivita
    $array_festivita = array(
        "01-01" => "Mio compleanno",
        "01-06" => "Epifania",
        "04-25" => "Festa della liberazione",
        "05-01" => "Festa dei lavoratori",
        "06-02" => "Festa della repubblica",
        "08-15" => "Ferragosto",
        "11-01" => "Festa di tutti i santi",
        "12-08" => "Festa dell'immacolata",
        "12-25" => "Natale",
        "12-26" => "Giorno di Santo Stefano"
    );
    // se non ho la data come argomento restituisco l'array
    if (!$data) {
        return $array_festivita;
    }
    // creo un array con la data ricevuta
    $exp = explode('-', $data);
    // verifico la data
    if (!checkdate($exp[1], $exp[2], $exp[0])) {
        // data non valida esco
        return "Data non valida!";
    }
    // time della data
    $timestamp = mktime(0, 0, 0, $exp[1], $exp[2], $exp[0]);
    // verifico se il giorno della settimana è Domenica con date('w') (0->Dom 6->Sab)
    if (date('w', $timestamp) == 0) {
        // Se = a 0 è festivo ! esco
        return true;
    }
    // altrimenti creo una variabile per la ricerca nell array
    $mesegiorno = $exp[1] . "-" . $exp[2];
    // ciclo l'array delle festivita
    foreach ($array_festivita as $key => $value) {
        // se trovo corrispondenza 
        if ($key == $mesegiorno) {
            // è festivo esco
            return true;
        }
    }
    // non è festivo esco
    return false;
}

// senza parametro restituisce un array
$res = festivita();
var_dump($res);

// con la data restituisce true se festivo false se lavorativo
$res = festivita("2012-12-24");
var_dump($res);
?>

Se ho dimenticato e/o sbagliato qualcosa segnalate pure :byebye:

Non vedo il motivo di tutto quel casino, basta semplicemente un controllo nell'array

PHP:
function festivita($data) {
    // creo un array con le festivita
    $array_festivita = array(
        "01-01" => "Mio compleanno",
        "01-06" => "Epifania",
        "04-25" => "Festa della liberazione",
        "05-01" => "Festa dei lavoratori",
        "06-02" => "Festa della repubblica",
        "08-15" => "Ferragosto",
        "11-01" => "Festa di tutti i santi",
        "12-08" => "Festa dell'immacolata",
        "12-25" => "Natale",
        "12-26" => "Giorno di Santo Stefano"
    );
    //controllo l'array e torno con l'eventuale festività essendo una stringa restituisce un valore boolean vero
    if(array_key_exists($data,$array_festivita)) return $array_festivita[$data];
    
    return false;
}

if(festivita(date('d-m')))
    echo 'Funzione semplificata';

$festivita = festivita(date('d-m')); //oppure ovviamente 'giorno-mese'

echo (!empty($festivita)) ? $festivita : 'Non ci sono festività';
Migliorata su compilatore e perfettamente funzionante :)
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
array_key_exists
questa funzione non la conoscevo :fonzie:

Anche le domeniche sono festive

e un controllo sulla data che arriva non guasta
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
se ti sovvenisse un giorno di inserire anche Pasqua e lunedì dell'Angelo,
si calcola così
ciao
Marino
PHP:
<?php

// sito di riferimento : http://aa.usno.navy.mil/faq/docs/easter.php

$anno = 2014;
Pasqua($anno);

print "PASQUA : ".$Pgiorno."/".$Pmese."/".$anno."<br />";
print "LUNEDI : ".$Lgiorno."/".$Lmese."/".$anno."<br />";

function Pasqua($anno) {
  global $Pmese,$Pgiorno,$Lmese,$Lgiorno;

  $nc=intval($anno/100);
  $nn=$anno-19*intval($anno/19);
  $nk=intval(($nc-17)/25);
  $ni1=$nc-intval($nc/4)-intval(($nc-$nk)/3)+19*$nn+15;
  $ni2=$ni1-30*intval($ni1/30);
  $ni3=$ni2-intval($ni2/28)*(1-intval($ni2/28)*intval(29/($ni2+1))*intval((21-$nn)/11));
  $nj1=$anno+intval($anno/4)+$ni3+2-$nc+intval($nc/4);
  $nj2=$nj1-7*intval($nj1/7);
  $nl=$ni3-$nj2;

  $Pmese=3+intval(($nl+40)/44);
  $Pgiorno=$nl+28-31*intval($Pmese/4);

  if ($Pmese == 3 and $Pgiorno == 31) { $Lmese = 4; $Lgiorno = 1; }
  else { $Lmese = $Pmese; $Lgiorno = $Pgiorno + 1; }
}
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Verifica dell'Età Javascript 0
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
G Problema verifica palindromo e verifica pari e dispari javascript Javascript 0
D verifica codice fiscale persona fisica /aziendale stesso campo HTML e CSS 1
F [PHP] Verifica utente presente nel DB PHP 13
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
Samuele Ronzani [PHP] Verifica se un dato esiste già PHP 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino EXCEL: verifica dati mancanti tra due sheet Windows e Software 2
A Verifica validità data in Java Java 2
kikki882 verifica account - dati personali Social Media Marketing 0
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
MarcoGrazia Verifica di un indirizzo email Snippet PHP 0
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
francesco87 [Vendo] Verifica pagina (bollino grigio) Annunci servizi di Social Media Marketing 0
M [PHP] Verifica formato data in tempo reale PHP 2
WebDr [Javascript] verifica input Javascript 8
R [WordPress] Accesso al db e verifica credenziali (password criptata) WordPress 1
A VENDO ACCOUNT DI DIVERSE PIATTAFORME E VERIFICA FACEBOOK ACCOUNT(PHOTO TAG VERIFICATION,VERIFICA TEL Annunci servizi di Social Media Marketing 2
P verifica caratteri per email e password PHP 17
S Verifica Esistenza Codice Fiscale PHP 5
C verifica e invio ordine php PHP 19
MarcoGrazia Verifica della data inserita in un form ( utilizzando bootstrap ) Javascript 7
G verifica caricamento foto originali su social network o sito di hosting immagini Discussioni Varie 3
A Strumenti "ufficiali" per la verifica dei Cookie HTML e CSS 2
A verifica di proprietà bing webmaster tool Google Search Console 0
P Verifica form solo con php senza javascript PHP 15
D Verifica inserimento dati form PHP 12
P verifica utente in db PHP 6
L [MySQL] Verifica disponibilità camera MySQL 32
L vendo account facebook femmina 5.000 amici con verifica cell e tag superati Annunci servizi di Social Media Marketing 0
V verifica form jQuery 5
filippino Verifica email per attribuzione dei contenuti SEO e Posizionamento 0
N Verifica email di registrazione PHP 0
D Verifica plug-in aggiornati di Firefox non vede gli aggiornamenti effettivi Windows e Software 0
il_bauscia Verifica segnale operatore 5ghz Reti LAN e Wireless 2
Virginia86 [risolto] Problema select e verifica form PHP 38
G php asincrono con ajax 2 campi di verifica PHP 1
P Problema ocon verifica campo in javascript Javascript 7
M Cosa ne pensate del mio primo file PHP (verifica disponibilità stanze)? PHP 0
M adsmanager e messaggio di verifica email Joomla 0
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
asevenx modulo registrazione utenti, cicli if di verifica PHP 9
A Espressione Regolare per verifica stringa PHP 14
A verifica codice PHP 7
M Verifica HTTP o HTTPS PHP 1
M Verifica se una Funzione appartiene ad una Classe PHP 9
F Esiste un programma che verifica la home page e la corregge automaticamente? HTML e CSS 7

Discussioni simili