Comprueba cuántos días pasaron desde la última actualización en PHP

Estoy tratando de verificar cuántos días pasaron desde que el usuario ingresó por última vez en el sistema. Obtuve la última vez que ingresó desde la columna de la tabla mysql (fecha y hora). entonces escribí:

$user_last_visit = $user_info['last_updated']; // 2013-08-08 00:00:00 $user_last_visit_str = strtotime($user_last_visit); // 1375912800 $today = strtotime(date('jm-y')); // 1250114400 $diff = $today - $user_last_visit_str; 
  • Donde $user_info['last_updated'] tiene la última vez que visitó con el valor de 2013-08-08 00:00:00.
  • Después de strtotime obtengo $user_last_visit_str igual a 1375912800
  • $today tiene el valor de 9-08-13 y después de strtotime obtengo 1250114400.

Algunas razones $diff = $today - $user_last_visit_str; es negativo en lugar de obtener un valor positivo con 24*60*60*1000 (un día = 24*60*60*1000 ms).

¿Algunas ideas?

Una solución simple que usa diff :

 echo date_create()->diff(date_create($user_last_visit))->days; 

Si todo lo demás falla, simplemente hazlo:

 $diff = floor((time() - $user_last_visit_str) / (60 * 60 * 24)); 

puede usar el código a continuación para obtener la diferencia de fecha, aquí recibí la última fecha estática, que es el 15 de julio de 2013, y tomando una fecha diferente a la actual.

  $last_date = date('ym-d', strtotime('15th july 2013'));//here give your date as i mentioned below //$last_date = date('ym-d', strtotime($your_old_date_val)); $current_date = date('ym-d');// echo $date_diff = strtotime($current_date) - strtotime($last_date) ; echo $val = 60*60*24; $days_diff = $date_diff / $val; echo $days_diff; 

Prueba esto:

 $user_last_visit = $user_info['last_updated']; // considering the value of user last visit is 2013-08-08 00:00:00 which indicates year, month, day, hour, minute, second respectiveliy $user_last_visit_str = strtotime($user_last_visit); $today = time(); $diff = $today - $user_last_visit_str; $no_of_days = ($diff / (60*60*24)); 

Intente utilizar un objeto DateTime si su versión de PHP lo admite:

 $user_last_visit = DateTime::createFromFormat('Ymd H:i:s', $user_info['last_updated']); $today = new DateTime(); $diff = $today->diff( $user_last_visit, true ); echo $diff->days; 

$diff será un objeto DateInterval .

intente revertir la asignación de $ today, así:

 $today = strtotime(date('ym-j')); 

eso funcionó para mí.