Setelah mengira perbezaan masa, bagaimana saya menentukan sama ada perbezaan itu hanya minit, jam, atau hari, minggu, bulan, tahun...?
$now = new DateTime('now'); $expire_date = date('Y-m-d H:i:s', strtotime('+ 3 weeks')); $expire_on = new DateTime($expire_date); $time_left = $now->diff($expires_on); *** 伪代码如下所示,展示了我想要实现的功能 if ($time_left < 1 小时) 显示分钟 elseif ($time_left < 1 天) 显示小时和分钟 elseif ($time_left < 1 周) 显示天、小时和分钟 elseif ($time_left < 1 月) 显示周、天、小时和分钟 elseif ($time_left < 1 年) 显示月、周、天、小时和分钟 endif ** 结束伪代码
Seperti yang saya cepat belajar, saya perlu menjelaskan perkara. Saya hanya mahu memaparkan maklumat yang minimum. Contohnya: "39 minit lagi" dan bukannya "0 hari, 0 jam, 39 minit lagi".
https://www.php.net/manual/en/class.dateinterval.php - Terdapat beberapa sifat dalam objek DateInterval ($time_left adalah salah satu daripadanya) supaya anda boleh mengujinya dan melihat sama ada ia lebih besar daripada 0. Saya cadangkan bermula dengan yang terbesar.
Contohnya:
Demo dalam talian: https://3v4l.org/BiYHD. Cuba tweaking
$expire_date
dan uji keputusan yang anda dapat.Nota: Atas sebab tertentu, kelas DateInterval tidak menyokong memberitahu anda nombor minggu. Di atas saya menganggap membahagikan bilangan hari dengan 7 sudah cukup untuk mengira bilangan minggu. Baki hari mesti dikira semula (tolak bilangan hari dalam minggu pengedaran).