1. /**
    2. * 传入日期格式或时间戳格式时间,返回与当前时间的差距,如1分钟前,2小时前,5月前,3年前等
    3. * @param string or int $date 分两种日期格式"2020-12-05 14:16:12"或时间戳格式"1386743303"
    4. * @param int $type
    5. * @return string
    6. */
    7. function format_time($date = 0, $type = 1) { //$type = 1为时间戳格式,$type = 2为date时间格式
    8. switch ($type) {
    9. case 1:
    10. //$data时间戳格式
    11. $second = SYS_TIME - $date;
    12. $minute = floor($second / 60) ? floor($second / 60) : 1;
    13. if ($minute >= 60 && $minute < (60 * 24)) {
    14. $hour = floor($minute / 60);
    15. } elseif ($minute >= (60 * 24) && $minute < (60 * 24 * 30)) {
    16. $day = floor($minute / ( 60 * 24));
    17. } elseif ($minute >= (60 * 24 * 30) && $minute < (60 * 24 * 365)) {
    18. $month = floor($minute / (60 * 24 * 30));
    19. } elseif ($minute >= (60 * 24 * 365)) {
    20. $year = floor($minute / (60 * 24 * 365));
    21. }
    22. break;
    23. case 2:
    24. //$date为字符串格式 2013-06-06 19:16:12
    25. $date = strtotime($date);
    26. $second = SYS_TIME - $date;
    27. $minute = floor($second / 60) ? floor($second / 60) : 1;
    28. if ($minute >= 60 && $minute < (60 * 24)) {
    29. $hour = floor($minute / 60);
    30. } elseif ($minute >= (60 * 24) && $minute < (60 * 24 * 30)) {
    31. $day = floor($minute / ( 60 * 24));
    32. } elseif ($minute >= (60 * 24 * 30) && $minute < (60 * 24 * 365)) {
    33. $mont = floor($minute / (60 * 24 * 30));
    34. } elseif ($minute >= (60 * 24 * 365)) {
    35. $year = floor($minute / (60 * 24 * 365));
    36. }
    37. break;
    38. default:
    39. break;
    40. }
    41. if (isset($year)) {
    42. return $year . '年前';
    43. } elseif (isset($month)) {
    44. return $month . '月前';
    45. } elseif (isset($day)) {
    46. return $day . '天前';
    47. } elseif (isset($hour)) {
    48. return $hour . '小时前';
    49. } elseif (isset($minute)) {
    50. return $minute . '分钟前';
    51. }
    52. }