2015-05-31 7 views
5

Używam WordPress jako mojego CMS. Próbuję sprawdzić, czy niektórzy z moich użytkowników mają urodziny w bieżącym tygodniu. bez powodzenia.PHP sprawdź, czy daty są w bieżącym tygodniu

Oto mój kod

$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'; 
} 

Ten wraca fałszywe dla mnie Jeśli użyję

'm-d' in $cdate variable 

To działa dobrze, jeśli jest używać RMD ale w tym przypadku, rok powinien być taki sam co nie jest możliwe, ponieważ wszyscy ludzie mają różne lata urodzenia

+1

w większości przypadków coś jak 'if (data (" W ", $ urodziny) == data (" W ")) {}" powinno wystarczyć. – Rufinus

Odpowiedz

9

Oto My Way

Aby go odnaleźć można zrobić, jak to

Krok 1:

wybrać Start Day i ostatni Tygodnia

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

Krok 2:

Zobacz, czy dana data jest między datą rozpoczęcia i ostatni tygodnia

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

Jeśli Yes następnie Należy Else Not

Więc Wreszcie kodeks powinien mieć to

<?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 !!!"; 
} 
?> 

Uwaga

  1. Możesz mieć swój własny Dzień Początek czyli Sunday lub Monday

  2. Możesz mieć własną Data lub prąd Data

2

Możesz użyć parametru formatu W, który będzie poda liczbę aktualnych słabych w roku (tydzień kalendarzowy).

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

$birthday muszą być znacznikiem czasu tutaj. Może musisz użyć $birthday = strtotime($birthdate);.

0

moim zdaniem, najprostszym rozwiązaniem jest przekazywanie ciągów do tej pory i zachowanie ich jako liczby, jak widać w tym przykładzie:

$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'; 
} 

Oczywiście musisz zmienić rok urodzin na bieżący.

0

Odpowiedź Richarda jest natychmiastowa. Tylko dla osób, które dotrą do tego postu, szukających sposobu sprawdzenia tygodnia, jest to samo, a także sprawdź, czy rok jest taki sam; to sprawdzi również, czy są one nie tylko w tym samym tygodniu w roku, ale także w tym samym roku.

$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. 
}