PHP проверяет, находятся ли даты на текущей неделе

Я использую WordPress в качестве моей CMS. Я пытаюсь проверить, есть ли у некоторых из моих пользователей день рождения на текущей неделе. без успеха.

вот мой код

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

Это возвращает false для меня Если я использую

  'm-d' in $cdate variable 

Он отлично работает, если используется Y-m-d но в этом случае годы должны быть одинаковыми , что невозможно, так как у всех людей разные годы рождения

4 ответов


вот мой путь

, чтобы найти его, вы можете сделать такой

Шаг 1 :

найти начало и последний день недели

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

Шаг 2 :

смотрите, если данная дата находится между началом и последним днем недели

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

если Yes тогда это принадлежит Else Not

Итак, наконец, код, который вы должны иметь

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

Примечание

  1. вы можете иметь свой собственный день начала, т. е. Sunday или Monday

  2. вы можете иметь свою собственную дату или текущую дату


вы можете использовать параметр format W, который даст вам номер текущего слабого в году (неделя календаря).

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

$birthdayздесь должна быть временная метка. Возможно, вам придется использовать $birthday = strtotime($birthdate);.


на мой взгляд, самое простое решение-передать строки на дату и сохранить их как число, как вы можете видеть в этом примере:

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

конечно, вам придется изменить Год рождения на текущий.


ответ Ричарда находится на месте. Просто для людей, которые достигают этого поста, ища, как проверить неделю, то же самое, а также проверить, что год тот же; это также проверит, что они не только в ту же неделю года, но и в том же году.

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