Menukar cap masa kepada rentetan masa relatif boleh berguna untuk memaparkan maklumat dalam format yang lebih mesra pengguna. Dalam PHP, terdapat beberapa fungsi dan pendekatan yang boleh anda gunakan untuk mencapai ini.
Satu pendekatan popular melibatkan penggunaan fungsi strtotime() untuk menukar perwakilan rentetan cap masa ke dalam format cap masa Unixnya (bilangan saat sejak zaman Unix, 1 Januari 1970 00:00:00 UTC). Anda kemudiannya boleh menggunakan fungsi seperti gmdate() atau date() untuk memformat cap waktu Unix, yang boleh memberi manfaat jika cap masa anda dalam format yang tidak konvensional.
Sebagai alternatif, anda boleh menggunakan kelas DateTime() untuk menukar cap masa atau rentetan tarikh ke dalam objek PHP DateTime. Kelas DateTime menyediakan pelbagai kaedah untuk memanipulasi dan memformat tarikh dan masa. Dengan membandingkan objek DateTime yang mewakili cap masa dengan masa semasa, anda boleh mengira masa berlalu dan membina rentetan masa relatif.
Berikut ialah contoh fungsi yang menggunakan kelas DateTime untuk menukar cap masa kepada rentetan masa lalu :
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 mengambil cap masa atau rentetan tarikh sebagai hujah dan mengembalikan rentetan masa relatif. Dengan menetapkan argumen $full kepada benar, anda boleh mendapatkan rentetan yang lebih terperinci yang merangkumi semua unit masa yang berkaitan. Jika tidak, ia hanya akan merangkumi unit masa yang berkaitan yang terbesar.
Contoh penggunaan:
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:
4 months ago 4 months ago 4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago
Fungsi ini menyediakan cara yang mudah dan boleh disesuaikan untuk menukar cap masa kepada rentetan masa relatif dalam PHP. Anda boleh menggunakannya untuk memaparkan maklumat sensitif masa dengan cara yang jelas dan ringkas untuk pengguna anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Cap Masa kepada Rentetan 'Masa Lalu' dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!