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

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

Linda Hamilton
發布: 2024-12-31 07:58:22
原創
268 人瀏覽過

How Can I Convert Timestamps to

在PHP 中將時間戳轉換為Time Ago 字串

將時間戳轉換為相對時間字串對於以更用戶友好的格式顯示資訊非常有用。在 PHP 中,您可以使用多種函數和方法來實現此目的。

一種流行的方法是使用strtotime() 函數將時間戳的字串表示形式轉換為其Unix 時間戳格式(秒數)自Unix 紀元(UTC 時間1970 年1 月1 日00: 00:00)開始。然後,您可以使用 gmdate() 或 date() 等函數來格式化 Unix 時間戳,如果您的時間戳記採用非常規格式,這會很有用。

或者,您可以使用 DateTime() 類別進行轉換將時間戳或日期字串轉換為 PHP DateTime 物件。 DateTime 類別提供了各種用於操作和格式化日期和時間的方法。透過將表示時間戳記的 DateTime 物件與當前時間進行比較,您可以計算經過的時間並建構一個相對時間字串。

下面是一個使用DateTime 類別將時間戳轉換為時間前字串的範例函數:

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';
}
登入後複製

此函數採用時間戳或日期字串作為參數並傳回相對時間字符串。將 $full 參數設為 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
登入後複製

此函數提供了一種簡單且可自訂的方法在PHP 中將時間戳轉換為相對時間字串。您可以使用它以清晰簡潔的方式向使用者顯示時間敏感的資訊。

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

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