检查自PHP上次更新以来经过的天数

时间:2013-08-09 05:53:34

标签: php datetime

我正在尝试检查用户上次进入系统后经过了多少天。我最后一次从mysql表栏(datetime)进入。所以我写道:

$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('j-m-y')); // 1250114400

$diff = $today - $user_last_visit_str;
  • $user_info['last_updated']最后一次访问的时间为2013-08-08 00:00:00。
  • 在strtotime之后我得到$user_last_visit_str等于1375912800
  • $today的值为9-08-13,在strtotime之后我的值为1250114400。

某些原因$diff = $today - $user_last_visit_str;为负值,而不是24*60*60*1000(一天= 24*60*60*1000 ms)获得正值。

有什么想法吗?

5 个答案:

答案 0 :(得分:2)

使用diff的简单解决方案:

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

如果一切都失败了,那就去做:

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

答案 1 :(得分:1)

您可以使用下面的代码来获取日期差异,这里我给出了静态的最后日期,即2013年7月15日,并且与当前日期不同。

    $last_date = date('y-m-d', strtotime('15th july 2013'));//here give your date as i mentioned below
    //$last_date = date('y-m-d', strtotime($your_old_date_val));
$current_date = date('y-m-d');//

echo $date_diff = strtotime($current_date) -  strtotime($last_date) ;
echo $val = 60*60*24;
$days_diff = $date_diff / $val;

echo $days_diff;

答案 2 :(得分:1)

试试这个:

$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));

答案 3 :(得分:1)

如果您的PHP版本支持,请尝试使用DateTime对象:

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

echo $diff->days;

$diff将成为DateInterval个对象。

答案 4 :(得分:0)

尝试撤销$ today分配,如下所示:

$today = strtotime(date('y-m-j'));

对我有用。