¿Cómo puedo comparar dos fechas en PHP?
La fecha se almacena en la base de datos en el siguiente formato
2011-10-2
Si quisiera comparar la fecha de hoy con la fecha en la base de datos para ver cuál es mayor, ¿cómo lo haría?
Intenté esto
$today = date("Y-m-d");
$expire = $row->expireDate //from db
if($today < $expireDate) { //do something; }
pero realmente no funciona de esa manera. ¿Cuál es otra forma de hacerlo?
Respuestas:
Almacénelo en AAAA-MM-DD y luego la comparación de cadenas funcionará porque '1'> '0', etc.
fuente
2016-03-27 11:59:47 ::: 2016-03-14 10:30:00
?Si todas sus fechas son posteriores al 1 de enero de 1970, podría usar algo como:
Si está usando PHP 5> = 5.2.0, podría usar la clase DateTime:
O algo por el estilo.
fuente
1st of January of 1970
solo se aplica a las versiones antiguas de PHP que se ejecutan en Windows y nunca fue un problema en Unix.strtotime
devolverá falso para fechas más grandes. stackoverflow.com/questions/2012589/…DateTime
método es el método preferido. Ese objeto puede hacer mucho más questrtotime
nunca.new DateTime('now')
también funciona para recuperar la fecha de hoySolo para complementar las respuestas ya dadas, vea el siguiente ejemplo:
Actualización: O simplemente use la función date () de la vieja escuela :
fuente
No haría esto con PHP. Una base de datos debe saber qué día es hoy (use MySQL-> NOW (), por ejemplo), por lo que será muy fácil comparar dentro de la consulta y devolver el resultado, sin ningún problema dependiendo de los tipos de fecha utilizados
fuente
fuente
Aquí hay una manera de cómo obtener la diferencia entre dos fechas en minutos.
fuente
Puede convertir las fechas en marcas de tiempo UNIX y comparar la diferencia entre ellas en segundos.
fuente
También tuve ese problema y lo soluciono:
fuente
Aquí está mi giro sobre cómo obtener la diferencia en días entre dos fechas con PHP. Tenga en cuenta el uso de '!' en el formato para descartar la parte de tiempo de las fechas, gracias a la información de DateTime createFromFormat sin tiempo .
fuente
Encontré la respuesta en un blog y es tan simple como:
Y obtendrá los días entre las 2 fechas.
fuente
Esto funciona debido a la lógica de comparación de cadenas de PHP. Simplemente puedes verificar ...
Ambas fechas deben estar en el mismo formato. Los dígitos deben estar rellenados con ceros a la izquierda y ordenados del más significativo al menos significativo.
Y-m-d
yY-m-d H:i:s
satisfacer estas condiciones.fuente
d-m-Y
no funcionará ...Y-m-d
(con el cero inicial como 2016-05-08) funcionará. Verifique esas fechas end-m-Y
formato01-10-2016
y20-02-2016
, comparando como cadenas 0 <2, dejará de comparar pero incorrectamente ...2011-10-2
.Si desea que una fecha ($ date) expire en algún intervalo, por ejemplo, una fecha de vencimiento de token al realizar un restablecimiento de contraseña, así es como puede hacerlo:
Pero en su caso, podría hacer la comparación de la siguiente manera:
fuente
requestDate()
método mágico , no se menciona en ningún lado. No usaría su respuesta, ni recomendaría que ningún investigador use su solución. No preveo que cambie mi voto.En primer lugar, intente dar el formato que desee a la fecha y hora actual de su servidor:
Obtener la fecha y hora actual
$ current_date = getdate ();
Fecha y hora separadas para administrarlas como desee:
$ current_date_only = $ current_date [año] .'- '. $ current_date [mon] .'-'. $ current_date [mday]; $ current_time_only = $ current_date ['horas']. ':'. $ current_date ['minutos']. ':'. $ current_date ['segundos'];
Compárelo dependiendo de si está usando donly date o datetime en su base de datos:
$ hoy = $ current_date_only ". '. $ current_time_only;
o
$ hoy = $ current_date_only;
if ($ hoy <$ expireDate)
Espero eso ayude
fuente