PHP计算时间差 显示用户发表评论时间

前段时间做一个APP后台时用户要求用户的评论以xx分钟前这种格式显示,给用户以良好的体验,于是笔者写了一个函数,本函数主要是利用PHP计算两个时间之间的差值,通过差值来转换,虽然代码很简单,但是很实用.PHP实例代码如下:

  1. <?php
  2. /**
  3. * 时间差计算
  4. *
  5. * @param Timestamp $time 时间差
  6. * @return String Time Elapsed
  7. * @author jakehu
  8. */
  9. function time2Units ($time)
  10. {
  11. $year = floor($time / 60 / 60 / 24 / 365);
  12. $time -= $year * 60 * 60 * 24 * 365;
  13. $month = floor($time / 60 / 60 / 24 / 30);
  14. $time -= $month * 60 * 60 * 24 * 30;
  15. $week = floor($time / 60 / 60 / 24 / 7);
  16. $time -= $week * 60 * 60 * 24 * 7;
  17. $day = floor($time / 60 / 60 / 24);
  18. $time -= $day * 60 * 60 * 24;
  19. $hour = floor($time / 60 / 60);
  20. $time -= $hour * 60 * 60;
  21. $minute = floor($time / 60);
  22. $time -= $minute * 60;
  23. $second = $time;
  24. $elapse = '';
  25. $unitArr = array('年前' =>'year', '个月前'=>'month', '周前'=>'week', '天前'=>'day',
  26. '小时前'=>'hour', '分钟前'=>'minute', '秒前'=>'second'
  27. );
  28. foreach ( $unitArr as $cn => $u )
  29. {
  30. if ( $year > 0 ) {//大于一年显示年月日
  31. $elapse = date('Y/m/d',time()-$time);
  32. break;
  33. }
  34. else if ( $$u > 0 )
  35. {
  36. $elapse = $$u . $cn;
  37. break;
  38. }
  39. }
  40. return $elapse;
  41. }
  42. $past = 1390000000; //起点时间
  43. $diff = time() - $past;//时间差
  44. echo '发表于' . time2Units($diff) . '前';
  45. ?>