在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中文網其他相關文章!