Come confrontare 2 date in PHP


Come confrontare 2 date in PHP

Un problema che ho riscontrato recentemente in PHP è stato quello di come confrontare 2 date in PHP, in un sito WordPress, che sulla homepage elencava degli eventi, e per ogni evento dovevo verificare se la data era maggiore della data odierna. Se lo era, era quindi un evento in programmazione, se no, era passato.

Ho installato il plugin per WordPress Types e creato un campo personalizzato “Data” , che ti fa scegliere la data dell’evento da un calendario fatto in Javascript (se avete usato il plugin sapete di cosa sto parlando).

Sulla homepage poi ho dovuto metterci un codice semplice PHP che controlla se questa data è maggiore della data odierna.

$todays_date = date("d-m-Y");

Con questa riga di codice prendiamo la data di oggi. L’altra data è memorizzata in una variabile $event_date. Per esempio:

$event_date = "16-03-2013";

Adesso la parte ingannevole arriva quando dobbiamo inserire il condizionale IF:

if (todays_date<$event_date)  
{//evento in programmazione}
else 
{// evento passato}

Questo codice non può funzionare perché se abbiamo per esempio la data dell’evento 16-03-2013 e la data odierna 11-04-2013 l’IF ci dirà che la data dell’evento è maggiore perché 16 è maggiore di 11, anche se in realtà 11 aprile e maggiore di 16 marzo.

Allora la soluzione per il confronto di 2 date in php arriva con la funzione di PHP strtotime() che trasforma ogni formato di data in un formato UNIX timestamp. In pratica converte la data in secondi, partendo dalla data di default che è 1 gennaio 1970 00:00:00 GMT.

$today = strtotime($todays_date);
$event_date_new = strtotime($event_date); 
if ($event_date_new > $today)
 { $stringa = "in programmazione"; } 
else 
{ $stringa = "passato"; }

Adesso è molto più efficiente il condizionale perché è come se paragonassimo 2 variabili normali.

Se avete qualche domanda, non esitate di commentare questo articolo!

Come confrontare 2 date in PHP
4.83 (96.67%) 6 votes

#comparare#confrontare#confronto#date#evento#paragonare#php#strtotime#timestamp#unix

3 thoughts on “Come confrontare 2 date in PHP

  1. Marco Ziliani ha detto:

    Oppure se si usa il formato americano Y-m-d si possono comunque confrontare due date con gli operatori logici

  2. Giuseppe ha detto:

    Salve. Sto utilizzando questa guida per la visualizzazione a tempo determinato di banner pubbicitari. Tuttavia, riscontro un problema per la loro visualizzazione a seconda della data impostata. Nel codice che riporto sotto, ad esempio, non vengono visualizzati i banner 1.jpg e 2.jpg mentre il banner 3.jpg viene visualizzato.
    Non riesco a capire dove ci sia errore. Potrei ricevere un aiuto, per favore?
    Ringrazio anticipatamente per la cortese attenzione.

    ‘immagini/banners/1.jpg’,
    ‘start’ => ’20-11-2017′,
    ‘end’ => ’20-11-2018′,
    ‘url’ => ‘no’,
    ‘website’ => ‘no’
    ),
    array(
    ‘image’ => ‘immagini/banners/2.jpg’,
    ‘start’ => ’20-11-2017′,
    ‘end’ => ’20-05-2018′,
    ‘url’ => ‘http://www.sitowebaziendale.com/’,
    ‘website’ => ‘yes’
    ),
    array(
    ‘image’ => ‘immagini/banners/3.jpg’,
    ‘start’ => ’10-11-2017′,
    ‘end’ => ’30-11-2018′,
    ‘url’ => ‘no’,
    ‘website’ => ‘no’
    )
    );
    shuffle($banners);
    ?>
    Sponsor

    $start && $today < $end && $banner['website'] == "yes") {
    echo "\n”;
    }

    if($today > $start && $today < $end && $banner['website'] == "no") {
    echo "\n”;
    }

    }
    ?>

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Hai bisogno di aiuto personalizzato con qualcosa che non è documentato qui? Richiedi assistenza
Iscriviti alla nostra newsletter

Iscriviti alla nostra newsletter

Iscriviti alla nostra mailing list per ricevere le ultime notizie e gli aggiornamenti dal nostro team.

You have Successfully Subscribed!