我正在尝试检查用户上次进入系统后经过了多少天。我最后一次从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。$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)获得正值。
有什么想法吗?
答案 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'));
对我有用。