Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menukar Cap Waktu kepada 'Masa Lalu' dalam PHP?

Bagaimana untuk Menukar Cap Waktu kepada 'Masa Lalu' dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-12-24 12:57:11741semak imbas

How to Convert a Timestamp to

Tukar Cap Masa kepada Masa Lalu dalam PHP: Panduan Komprehensif

Untuk menukar cap masa kepada format yang boleh dibaca manusia seperti "3 minit ago" dalam PHP, kita boleh menggunakan fungsi mudah time_elapsed_string(). Mari kita terokai penggunaannya dan mendalami pelaksanaannya.

Penggunaan Fungsi:

Fungsi time_elapsed_string() mengambil rentetan datetime sebagai hujah pertamanya, mewakili cap waktu yang anda inginkan untuk menukar. Secara pilihan, anda boleh menentukan benar sebagai hujah kedua untuk memaparkan masa berlalu penuh dalam tahun, bulan, minggu, hari, jam, minit dan saat.

Contohnya:

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);

Output Fungsi:

Fungsi mengembalikan rentetan yang mewakili masa berlalu dalam mesra pengguna format:

4 months ago
4 months ago
4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago

Pelaksanaan:

Mari kita periksa pelaksanaan fungsi 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';
}

Fungsi ini mula-mula mencipta kejadian daripada DateTime untuk masa semasa ($sekarang) dan cap masa yang disediakan ($ago). Ia kemudian mengira perbezaan antara kedua-duanya menggunakan kaedah diff(), yang mengembalikan objek DateInterval yang mengandungi masa berlalu dalam pelbagai unit.

Fungsi mengubah suai komponen hari objek $diff untuk mengambil kira beberapa minggu dan mengalih keluar komponen nilai sifar daripada tatasusunan $string. Jika parameter $full adalah benar, tatasusunan penuh digunakan untuk output; jika tidak, hanya komponen pertama dipilih.

Akhir sekali, fungsi menukar tatasusunan $string menjadi rentetan yang boleh dibaca manusia dengan menggabungkan komponen dengan koma dan menambahkan "ago." Jika masa yang berlalu kurang daripada seminit, ia mengembalikan "sebentar tadi."

Dengan memahami pelaksanaan fungsi berguna ini, anda boleh menukar cap masa dengan berkesan kepada rentetan masa lalu dalam aplikasi PHP anda, menjadikannya lebih mudah untuk pengguna untuk memahami maklumat tarikh.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Cap Waktu kepada 'Masa Lalu' dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn