que - saber si una fecha ya paso php
Cómo comparar dos fechas en php (13)
Deberá asegurarse de que sus fechas sean objetos de fecha válidos.
Prueba esto:
$date1=date(''d/m/y'');
$tempArr=explode(''_'', ''31_12_11'');
$date2 = date("d/m/y", mktime(0, 0, 0, $tempArr[1], $tempArr[0], $tempArr[2]));
A continuación, puede realizar el método strtotime()
para obtener la diferencia.
Cómo comparar dos fechas en php si las fechas están en formato ''03_01_12''
y ''31_12_11''
.
Estoy usando este código:
$date1=date(''d_m_y'');
$date2=''31_12_11'';
if(strtotime($date1) < strtotime($date2))
echo ''1 is small =''.strtotime($date1).'',''.$date1;
else
echo ''2 is small =''.strtotime($date2).'',''.$date2;
Pero no está funcionando ...
Extendiendo la respuesta de @ nevermind, uno puede usar DateTime::createFromFormat: like,
// use - instead of _. replace _ by - if needed.
$format = "d-m-y";
$date1 = DateTime::createFromFormat($format, date(''d-m-y''));
$date2 = DateTime::createFromFormat($format, str_replace("_", "-",$date2));
var_dump($date1 > $date2);
La función date_diff () devuelve la diferencia entre dos objetos DateTime.
Si la primera fecha es anterior a la segunda fecha, se devolverá un número positivo de días; de lo contrario, un número negativo de días:
<?php
$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
?>
la salida será "+272 días";
cambiando $ date1 = "2014-03-15"
<?php
$date1=date_create("2014-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
?>
La salida será "-93 días"
No sé cuál es tu problema, pero sí:
function date_compare($d1, $d2)
{
$d1 = explode(''_'', $d1);
$d2 = explode(''_'', $d2);
$d1 = array_reverse($d1);
$d2 = array_reverse($d2);
if (strtotime(implode(''-'', $d1)) > strtotime(implode(''-'', $d2)))
{
return $d2;
}
else
{
return $d1;
}
}
Prueba esto
$data1 = strtotime(/date("d/m/Y"));
$data1 = date_create($data1);
$data2 = date_create("21/06/2017");
if($data1 < $data2){
return "The most current date is date1";
}
return "The most current date is date2";
Puede converte para el número entero y comparar.
P.ej.:
$ date_1 = date (''Ymd''); $ date_2 = ''31_12_2011'';
$ date_2 = (int) implode (array_reverse (explode ("_", $ date_2)));
echo ($ date_1 <$ date_2)? ''$ date_2 es más grande que $ date_1'': ''$ date_2 es más pequeño que $ date_1'';
Sé que esto es tarde, pero para referencia futura, coloque el formato de fecha en un formato reconocido usando str_replace, entonces su función funcionará. (reemplace el guión bajo con un guion)
//change the format to dashes instead of underscores, then get the timestamp
$date1 = strtotime(str_replace("_", "-",$date1));
$date2 = strtotime(str_replace("_", "-",$date2));
//compare the dates
if($date1 < $date2){
//convert the date back to underscore format if needed when printing it out.
echo ''1 is small=''.$date1.'',''.date(''d_m_y'',$date1);
}else{
echo ''2 is small=''.$date2.'',''.date(''d_m_y'',$date2);
}
Tus corchetes no son todos coincidentes:
if(strtotime($date1))<strtotime($date2)))
Cambiar a esto:
if(strtotime($date1) < strtotime($date2))
Usando DateTime::createFromFormat :
$format = "d_m_y";
$date1 = /DateTime::createFromFormat($format, "03_01_12");
$date2 = /DateTime::createFromFormat($format, "31_12_11");
var_dump($date1 > $date2);
compare el resultado de maketime()
para cada una de las veces
puedes probar algo como:
$date1 = date_create(''2014-1-23''); // format of yyyy-mm-dd
$date2 = date_create(''2014-2-3''); // format of yyyy-mm-dd
$dateDiff = date_diff($date1, $date2);
var_dump($dateDiff);
A continuación, puede acceder a la diferencia en días como $ dateDiff-> d;
No responde el problema real de OP, pero solo responde el título. Dado que este es el resultado superior para "comparar fechas en php".
Bastante simple de usar Datetime Objects ( v>= 5.3.0
) y compararlos directamente
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");
var_dump($date1 < $date2);
Nota: el objeto de fecha y hora también se puede crear para una fecha predefinida como se muestra a continuación.
$date1 = new DateTime(''2009-10-11'');
<?php
$expiry_date = "2017-12-31 00:00:00"
$today = date(''d-m-Y'',time());
$exp = date(''d-m-Y'',strtotime($expiry_date));
$expDate = date_create($exp);
$todayDate = date_create($today);
$diff = date_diff($todayDate, $expDate);
if($diff->format("%R%a")>0){
echo "active";
}else{
echo "inactive";
}
echo "Remaining Days ".$diff->format("%R%a days");
?>