格式化聊天列表時間

最近實現一個相似客服聊天的功能。微信

可是對列表須要顯示的時間格式,不太瞭解函數

因而,參照微信聊天列表的時間顯示邏輯。本身實現了一個函數this

具體規則:spa

  • 若須要格式化的時間戳(t)>當天凌晨時間戳,則顯示「上午/下午 xx:xx」
  • 若t>昨天凌晨時間戳,則顯示「昨天」
  • 若t>本週一的凌晨時間戳,則顯示「星期x」
  • 若t>上週一的凌晨時間戳,則顯示「上星期x」
  • 若t<上週一的凌晨時間戳,判斷t所在年份是否跟當前年份相同
    • 相同,顯示「x月x日」
    • 不一樣,顯示「x年x月x日」

具體代碼:code

   /**
     * 格式化聊天列表時間
     * @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;}
相關文章
相關標籤/搜索