Ví dụ
<?php
function to_time_ago($time) {
$difference = time() - $time;
if ($difference < 1) {
return 'less than a second ago';
}
$time_rule = array(
12 * 30 * 24 * 60 * 60 => 'year',
30 * 24 * 60 * 60 => 'month',
24 * 60 * 60 => 'day',
60 * 60 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach ($time_rule as $sec => $str) {
$res = $difference / $sec;
if ($res >= 1) {
$t = round($res);
return $t . ' ' . $str . ($t > 1 ? 's' : '') . ' ago';
}
}
}
echo "The timestamp to time ago conversion is ";
echo to_time_ago(time() - 600);
?>
Kết quả
The timestamp to time ago conversion is 10 minutes ago
Giải thích
Hàm to_time_ago tính hiệu giữa thời gian hiện tại time() và timestamp đầu vào. Nếu <1 giây trả về "less than a second ago". Mảng $time_rule định nghĩa ngưỡng giây cho từng đơn vị (năm, tháng, ngày, giờ, phút, giây). Duyệt mảng, tìm đơn vị lớn nhất phù hợp, làm tròn, trả về chuỗi "X unit(s) ago".
Lưu ý: Tháng tính 30 ngày, năm 360 ngày (12*30) - gần đúng. Để chính xác hơn, dùng DateTime::diff() hoặc thư viện Carbon.