1, ví dụ 600s -> 10 minutes ago.">
 Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Chương trình PHP chuyển timestamp thành thời gian tương đối (time ago)

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.