根据时间戳,与当前时间对比过去多久包括未来


写一个php函数,传入时间戳,返回距离此刻的时间,超过1年的显示年月日,超过一个月的显示月日,超过一天的显示n天前n天后,超过1小时的显示n小时前n小时后,超过1分钟到,显示n分钟前n分钟后,超过5秒的显示n秒前n秒后,5秒内的显示刚刚


    /**
     * 根据时间戳,与当前时间对比过去多久包括未来
     * @param $timestamp
     * @return false|string
     */
    public static function seeing($timestamp)
    {
        $now = time();
        $diff = $now - $timestamp;
        $absDiff = abs($diff);
        $prefix = ($diff > 0 ? "" : "在");
        $suffix = ($diff > 0 ? "前" : "后");

        if ($absDiff < 5) {
            return "刚刚";
        }
        if ($absDiff < 60) {
            return $prefix . $absDiff . "秒" . $suffix;
        }
        if ($absDiff < 3600) {
            return $prefix . floor($absDiff / 60) . "分钟" . $suffix;
        }
        if ($absDiff < 86400) {
            return $prefix . floor($absDiff / 3600) . "小时" . $suffix;
        }
        if ($absDiff < 2592000) {
            return $prefix . floor($absDiff / 86400) . "天" . $suffix;
        }
        if ($absDiff < 31536000) {
            return date($diff > 0 ? "m月d日" : "m-d", $timestamp);
        }

        return date($diff > 0 ? "Y年m月d日" : "on Y-m-d", $timestamp);
    }

原文链接:https://blog.yongit.com/note/1573053.html