2015-05-31 10 views
5

Sto usando WordPress come mio CMS. Sto cercando di verificare se alcuni dei miei utenti hanno un compleanno nella settimana corrente. senza successo.PHP controlla se le date sono nella settimana corrente

Ecco il mio codice

$fd = date("Y-m-d",strtotime('monday this week')); 
$ld = date("Y-m-d",strtotime("sunday this week")); 

$cdate = date('m-d',time()); 
if (($cdate >= $fd) && ($cdate <= $ld)) { 
echo 'true'; 
} else { 
echo 'false'; 
} 

Questo sta tornando false per me Se uso

'm-d' in $cdate variable 

Funziona bene se è l'uso Ymd ma in quel caso, gli anni dovrebbero essere lo stesso che non è possibile in quanto tutte le persone hanno diversi anni di nascita

+1

nella maggior parte dei casi, qualcosa come 'if (data ('W', $ compleanno) == date ('W')) {}' dovrebbe essere sufficiente. – Rufinus

risposta

9

Ecco il mio modo

Per trovarla si può fare in questo modo

Fase 1:

trovare il giorno di inizio e ultimo della settimana

$FirstDay = date("Y-m-d", strtotime('sunday last week')); 
$LastDay = date("Y-m-d", strtotime('sunday this week')); 

Passaggio 2:

vedere se la data indicata è tra il giorno di inizio e ultimo della settimana

if($Date > $FirstDay && $Date < $LastDay) { 
     echo "It is Between"; 
    } else { 
     echo "No Not !!!"; 
    } 

Se Yes allora appartiene Else Not

Così, finalmente il codice si deve avere è

<?php 
$Date = "2015-06-01"; #Your Own Date 
$Date = date('Y-m-d'); #Or Current Date Fixed here 
$FirstDay = date("Y-m-d", strtotime('sunday last week')); 
$LastDay = date("Y-m-d", strtotime('sunday this week')); 
if($Date > $FirstDay && $Date < $LastDay) { 
    echo "It is Between"; 
} else { 
    echo "No Not !!!"; 
} 
?> 

Nota

  1. È possibile avere il proprio Giorno Inizio cioè, Sunday o Monday

  2. È possibile avere il proprio data o data corrente

2

È possibile utilizzare il parametro di formato W, che darti il ​​numero del debole corrente nell'anno (la settimana del calendario).

if(date("W") == date("W", $birthday)){ 
    // User has birthday this week 
} 

$birthday deve essere un timestamp qui. Forse devi usare $birthday = strtotime($birthdate);.

0

A mio avviso, la soluzione più semplice è passare le stringhe fino ad oggi e tenerle come un numero, come puoi vedere in questo esempio:

$fd = strtotime('monday this week'); // First date 
$ld = strtotime('sunday this week'); // last date 

$birthday_date = strtotime('YYYY-mm-dd'); // Birthday date 

if (($birthday_date > $fd) && ($birthday_date < $ld)) { 
    echo 'true'; 
} else { 
    echo 'false'; 
} 

Ovviamente, dovrai cambiare l'anno di compleanno in quello attuale.

0

La risposta di Richard è azzeccata. Solo per le persone che raggiungono questo post cercando come controllare la settimana è lo stesso e controlla anche che l'anno sia lo stesso; questo controllerà anche che non siano solo nella stessa settimana dell'anno, ma anche nello stesso anno.

$testData = "1447672336"; 
if((date("W") == date("W", $testData)) && (date("Y") == date("Y", $testData))){ 
    // The timestamp in $testData is the same week of the same year as today is. 
} 
Problemi correlati