0

我正在尝试检查自用户上次进入系统以来经过了多少天。我得到他/她最后一次从 mysql 表列(日期时间)输入的时间。所以我写道:

$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*100024*60*60*1000

有任何想法吗?

4

5 回答 5

2

使用diff的简单解决方案:

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

如果所有其他方法都失败了,请执行以下操作:

$diff = floor((time() - $user_last_visit_str) / (60 * 60 * 24));
于 2013-08-09T06:03:21.027 回答
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;
于 2013-08-09T06:03:01.687 回答
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));
于 2013-08-09T06:03:35.200 回答
1

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

$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对象。

于 2013-08-09T06:08:54.640 回答
0

尝试反转 $today 分配,如下所示:

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

这对我有用。

于 2013-08-09T05:59:46.140 回答