首頁 > 後端開發 > php教程 > 如何在 PHP 中將時間戳記轉換為「Time Ago」?

如何在 PHP 中將時間戳記轉換為「Time Ago」?

Susan Sarandon
發布: 2024-12-24 12:57:11
原創
734 人瀏覽過

How to Convert a Timestamp to

在PHP 中將時間戳轉換為前時間:綜合指南

將時間戳轉換為人類可讀的格式,例如「 3 分鐘」在PHP 中,我們可以使用方便的函數time_elapsed_string()。讓我們探索它的用法並深入研究它的實現。

函數用法:

time_elapsed_string() 函數將一個日期時間字串作為其第一個參數,表示您想要的時間戳記進行轉換。 (可選)您可以指定 true 作為第二個參數,以顯示完整的經過時間(以年、月、週、日、小時、分鐘和秒為單位)。

例如:

echo time_elapsed_string('2013-05-01 00:22:35');
echo time_elapsed_string('@1367367755'); # timestamp input
echo time_elapsed_string('2013-05-01 00:22:35', true);
登入後複製

函數輸出:

函數傳回一個使用者友善的表示經過時間的字串格式:

4 months ago
4 months ago
4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago
登入後複製

實作:

我們來看看time_elapsed_string()函數的實作:

function time_elapsed_string($datetime, $full = false) {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);

    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;

    $string = array(
        'y' => 'year',
        'm' => 'month',
        'w' => 'week',
        'd' => 'day',
        'h' => 'hour',
        'i' => 'minute',
        's' => 'second',
    );
    foreach ($string as $k => &$v) {
        if ($diff->$k) {
            $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
        } else {
            unset($string[$k]);
        }
    }

    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' ago' : 'just now';
}
登入後複製

這個函數首先建立實例當前時間 ($now) 和提供的時間戳記 ($ago) 的 DateTime。然後,它使用 diff() 方法計算兩者之間的差異,該方法返回 DateInterval 對象,其中包含以各種單位表示的經過時間。

函數修改 $diff 物件的天數部分以考慮週數和從 $string 陣列中刪除零值元件。如果 $full 參數為 true,則使用完整陣列進行輸出;否則,僅選擇第一個元件。

最後,該函數透過以逗號連接元件並附加“ago”,將 $string 陣列轉換為人類可讀的字串。如果經過的時間小於一分鐘,則傳回「剛剛」。

透過了解這個方便的函數的實現,您可以在 PHP 應用程式中有效地將時間戳記轉換為時間之前的字串,從而更容易用戶理解日期資訊。

以上是如何在 PHP 中將時間戳記轉換為「Time Ago」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板