Menukar Nombor kepada Nama Bulan dalam PHP
Dalam percubaan untuk menukar nilai bulan berangka kepada nama yang sepadan menggunakan PHP, kod berikut telah bekerja:
<code class="php">$monthNum = sprintf("%02s", $result["month"]); $monthName = date("F", strtotime($monthNum)); echo $monthName;</code>
Walau bagaimanapun, bukannya mengembalikan nama bulan yang dijangkakan (cth., Ogos), ia tersalah memaparkan "Disember." Siasatan lanjut mendedahkan bahawa $result["month"] ditetapkan kepada 8 dan fungsi sprintf menambah sifar pendahuluan, menghasilkan nilai "08."
Penyelesaian Disyorkan
Untuk versi PHP moden (>= 5.2), kaedah pilihan ialah menggunakan objek DateTime untuk pengiraan tarikh/masa. Berikut ialah penyelesaian yang dipertingkatkan:
<code class="php">$monthNum = 3; $dateObj = DateTime::createFromFormat('!m', $monthNum); $monthName = $dateObj->format('F'); // March</code>
The ! aksara pemformatan menetapkan semula tarikh kepada zaman Unix, dan aksara format m mewakili nilai bulan angka dengan sifar pendahuluan.
Penyelesaian Alternatif
Untuk versi PHP yang lebih lama, pendekatan alternatif ialah menggunakan mktime() untuk mencipta cap masa:
<code class="php">$monthNum = 3; $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>
Ingat, jika anda lebih suka nama bulan yang disingkatkan (cth., Mar), cuma gantikan 'F' dengan 'M'. Pilihan pemformatan terperinci boleh didapati dalam dokumentasi manual PHP.
Atas ialah kandungan terperinci Mengapakah `tarikh('F')` Mengembalikan 'Disember' Apabila Diberi '08' sebagai Input Bulan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!