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
Lepaskan: 2024-12-24 12:57:11
asal
784 orang telah melayarinya

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);
Salin selepas log masuk

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
Salin selepas log masuk

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';
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan