热门IT资讯网

php实现聊天列表显示时间

发表于:2024-11-30 作者:热门IT资讯网编辑
编辑最后更新 2024年11月30日,最近实现一个类似客服聊天的功能。但是对列表需要显示的时间格式,不太了解于是,参照微信聊天列表的时间显示逻辑。自己实现了一个函数具体规则:若需要格式化的时间戳(t)>当天凌晨时间戳,则显示"上午/下午

最近实现一个类似客服聊天的功能。

但是对列表需要显示的时间格式,不太了解

于是,参照微信聊天列表的时间显示逻辑。自己实现了一个函数

具体规则:

若需要格式化的时间戳(t)>当天凌晨时间戳,则显示"上午/下午 xx:xx"若t>昨天凌晨时间戳,则显示"昨天"若t>本周一的凌晨时间戳,则显示"星期x"若t>上周一的凌晨时间戳,则显示"上星期x"若t<上周一的凌晨时间戳,判断t所在年份是否跟当前年份相同相同,显示"x月x日"不同,显示"x年x月x日"

具体代码:

/**     * 格式化聊天列表时间     * @param $timestamp int 时间戳     * @return false|string     */    public static function formatChatListTime($timestamp){        $today = strtotime('today');        $yesterday = strtotime('yesterday');        // 本周一        $thisMonday = $today - ((date('w',time()) == 0 ? 7 : date('w',time()))-1)*24*3600;        // 上周一        $lastMonday = $thisMonday - 7*24*3600;        if ($timestamp > $today){            $a = date('a', $timestamp);            $t = date('h:i', $timestamp);            if ($a == 'am'){                $a = '上午 ';            }else{                $a = '下午 ';            }            $result = $a.$t;        }else if ($timestamp > $yesterday){            $result = '昨天';        }else if ($timestamp > $thisMonday){            $result = self::getWeekDesc($timestamp);        }else if ($timestamp > $lastMonday){            $result = '上' . self::getWeekDesc($timestamp);        }else{            if (date('Y', $timestamp) == date('Y', time())){                $result = self::dateTimeFormat($timestamp, 'm月d日');            }else{                $result = self::dateTimeFormat($timestamp, 'Y年m月d日');            }        }        return $result;    }/** * 获取指定时间戳的星期几-中文描述 * @param int $timeStamp 时间戳 * @return string */public static function getWeekDesc($timeStamp){    if(intval($timeStamp) == 0){        return '';    }    $week = date('w', $timeStamp);    switch ($week){        case 0:            $desc = '星期日';            break;        case 1:            $desc = '星期一';            break;        case 2:            $desc = '星期二';            break;        case 3:            $desc = '星期三';            break;        case 4:            $desc = '星期四';            break;        case 5:            $desc = '星期五';            break;        case 6:            $desc = '星期六';            break;        default:            $desc = '';            break;    }    return $desc;}

以上就是格式化聊天列表时间的详细内容,更多请关注其它相关文章!

0