PHP comprueba si las fechas están en la semana actual

3 minutos de lectura

Estoy usando WordPress como mi CMS. Estoy tratando de verificar si alguno de mis usuarios cumple años en la semana actual. sin exito

Aquí está mi código

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

Esto me está devolviendo falso si uso

  'm-d' in $cdate variable 

Funciona bien si se usa Ymd, pero en ese caso, los años deberían ser los mismos, lo cual no es posible ya que todas las personas tienen diferentes años de nacimiento.

  • en la mayoría de los casos, algo como if(date('W', $birthday) == date('W')){}debería ser suficiente.

    – Rufino

    31 de mayo de 2015 a las 10:14

avatar de usuario
Sultán Allaudeen

Aquí está mi camino

Para encontrarlo puedes hacer así

Paso 1 :

Encuentra el inicio y el último día de la semana

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

Paso 2 :

Ver si la fecha dada está entre el inicio y el último día de la semana

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

Si Yes entonces pertenece más Not

Entonces, finalmente, el código que tendrás es

<?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. Puede tener su propio día de inicio, es decir, Sunday o Monday

  2. Puede tener su propia fecha o fecha actual

Puede utilizar el parámetro de formato Wque le dará el número del débil actual en el año (la semana del calendario).

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

$birthdayTiene que haber una marca de tiempo aquí. Tal vez tengas que usar $birthday = strtotime($birthdate);.

  • Esta es la solución más elegante de la OMI

    – Tami

    29 mayo 2021 a las 21:54

La respuesta de Richard es acertada. Solo para las personas que llegan a este post buscando como comprobar que la semana es la misma y también comprobar que el año es el mismo; esto también verificará que no solo estén en la misma semana del año, sino también en el mismo año.

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

En mi opinión, la solución más fácil es pasar cadenas hasta la fecha y mantenerlas como un número, como puedes ver en este ejemplo:

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

Por supuesto, tendrás que cambiar el año de cumpleaños al actual.

¿Ha sido útil esta solución?