Saya punya kode PHP ini:
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));
echo $monthName;
Tapi itu kembali December
daripada August
.
$result["month"]
sama dengan 8, jadi sprintf
fungsinya menambahkan a 0
untuk membuatnya 08
.
strtotime
tidak tahu apa yang Anda coba lakukan. Atau gunakan saja saklar untuk hal seperti ini.strtotime
tidak tahu apa artinya "8".strtotime
mem-parsing stempel waktu lengkap seperti "2012-05-12 08:43:12". Apa arti "8" dalam konteks ini?echo date( "F", time() );
:? Misalnya,echo date( "F", strtotime("2019-03-09") );
akan menampilkan "Maret"Jawaban:
Cara yang disarankan untuk melakukan ini:
Saat ini, Anda harus benar-benar menggunakan objek DateTime untuk matematika tanggal / waktu. Ini mengharuskan Anda untuk memiliki versi PHP> = 5.2. Seperti yang ditunjukkan dalam jawaban Glavić , Anda dapat menggunakan yang berikut:
The
!
format karakter digunakan untuk me-reset semuanya ke zaman Unix . Them
karakter Format adalah representasi numerik dari satu bulan, dengan nol terkemuka.Solusi alternatif:
Jika Anda menggunakan versi PHP yang lebih lama dan tidak dapat memutakhirkan saat ini, Anda dapat solusi ini. Parameter
date()
fungsi kedua menerima cap waktu, dan Anda dapat menggunakannyamktime()
untuk membuatnya, seperti:Jika Anda ingin nama bulan 3 huruf seperti
Mar
, ubahF
keM
. Daftar semua opsi pemformatan yang tersedia dapat ditemukan dalam dokumentasi manual PHP .sumber
Hanya karena semua orang menggunakan fungsi strtotime () dan date (), saya akan menunjukkan contoh DateTime :
sumber
DateTime::createFromFormat('m|', $result['month']);
untuk mereset hanya bidang yang tidak ada.strftime()
untuk itu.Gunakan
mktime()
:Lihat manual PHP: http://php.net/mktime
sumber
"m"
itu akan mengembalikan bulan sebagai angka 2 digit sebagai astring
. misal Januari = 01, Februari = 02strtotime
mengharapkan format tanggal standar, dan mengembalikan stempel waktu.Anda tampaknya
strtotime
memberikan satu digit untuk mengeluarkan format tanggal.Anda harus menggunakan
mktime
yang menggunakan elemen tanggal sebagai parameter.Kode lengkap Anda:
Namun, fungsi mktime tidak memerlukan nol di depan untuk angka bulan, sehingga baris pertama sama sekali tidak perlu, dan
$result["month"]
dapat diteruskan langsung ke fungsi.Ini kemudian semua dapat digabungkan menjadi satu baris, menggemakan inline tanggal.
Kode refactored Anda:
...
sumber
date("F", mktime(null, null, null, 2));
kembaliMarch
sebagai gantinyaFebruary
.mktime
akan menggunakan hari ini. Hari ini tanggal 31. Apa tanggal 31 Februari? :)1
tidak diberikan sebagai parameter ke-5mktime
tetapi sebagai parameter ke-3date
yang tidak akan menghasilkan hasil yang diharapkanUntuk melakukan konversi sehubungan dengan lokal saat ini, Anda dapat menggunakan
strftime
fungsi:date
tidak menghormati lokal,strftime
ya.sumber
$monthName = utf8_encode(strftime('%B', mktime(0, 0, 0, $monthNumber)));
untuk menampilkan karakter aksen seperti di 'Août'Jika Anda hanya ingin array nama bulan dari awal tahun hingga akhir misalnya untuk mengisi pilihan drop-down, saya hanya akan menggunakan yang berikut;
sumber
Ada banyak cara untuk mencetak sebulan dari nomor yang diberikan. Pilih satu suite untuk Anda.
1. date () berfungsi bersama dengan parameter 'F'
Contoh kode:
2. Dengan membuat objek tanggal php menggunakan createFromFormat ()
Contoh Kode
3. fungsi strtotime ()
4. fungsi mktime ()
5. Dengan menggunakan jdmonthname ()
sumber
beradaptasi sesuai kebutuhan
sumber
Jika Anda memiliki nomor bulan, pertama-tama Anda dapat membuat tanggal darinya dengan tanggal default 1 dan tahun default tahun berjalan, kemudian ekstrak nama bulan dari tanggal yang dibuat:
Kode ini menganggap Anda menyimpan nomor bulan Anda dalam $ i
Semoga ini bisa membantu seseorang
sumber
Saya menemukan ini di https://css-tricks.com/snippets/php/change-month-number-to-month-name/ dan itu bekerja dengan sempurna.
sumber
ini sepele mudah, mengapa begitu banyak orang membuat saran buruk seperti itu? @ Bor adalah yang terdekat, tapi ini yang paling kuat
ini adalah cara untuk melakukannya
sumber
Saat ini saya menggunakan solusi di bawah ini untuk mengatasi masalah yang sama:
Untuk membaca lebih lanjut tentang mengatur lokal, buka http://php.net/manual/en/function.setlocale.php
Untuk mempelajari lebih lanjut tentang strftime, buka http://php.net/manual/en/function.strftime.php
Ucfirst()
digunakan untuk menggunakan huruf besar pada huruf pertama dalam sebuah string.sumber
sumber
Anda perlu mengatur bidang dengan
strtotime
ataumktime
Dengan
mktime
menetapkan hanya bulan. Coba yang ini:sumber
gunakan kode di atas
sumber
Ini untuk semua kebutuhan konversi tanggal
sumber
sumber
Saya pikir menggunakan cal_info () adalah cara termudah untuk mengkonversi dari angka ke string.
Lihat dokumen untuk cal_info ()
sumber
Menggunakan:
sumber
gregoriantojd
danjdmonthname
berada dalam ekstensi kalender dan memerlukan kompilasi PHP dengan--enable-calendar
kecuali Anda berada di Windows.Saya tahu pertanyaan ini ditanyakan beberapa waktu yang lalu sekarang, tetapi saya pikir semua orang mencari jawaban ini mungkin hanya mencoba untuk menghindari menuliskan seluruh pernyataan if / else, jadi saya menulisnya untuk Anda sehingga Anda dapat menyalin / menempel. Satu-satunya peringatan dengan fungsi ini adalah bahwa ia berjalan pada jumlah aktual bulan itu, bukan angka yang diindeks 0, jadi Januari = 1, bukan 0.
sumber
Untuk mendapatkan nama bulan dengan memberikan nomor bulan
Di mana 'F' akan mengembalikan nama bulan Anda Misalnya. 'Mungkin'
sumber
Beginilah cara saya melakukannya
kembali
30 June 2019
sumber
Trik sederhana di sini Anda dapat menggunakan fungsi strtotime () bisa diterapkan sesuai kebutuhan Anda, nomor konversi ke nama bulan.
1.Jika Anda menginginkan hasil di Jan, Feb dan Mar Kemudian coba di bawah ini dengan 'M' sebagai parameter di dalam tanggal.
Output: Mei
/ 2. Anda dapat mencoba dengan 'F' daripada 'M' untuk mendapatkan nama bulan penuh sebagai output Januari Februari Maret dll.
Output: Januari
sumber
Itu ekstrak bulan.
sumber
Gunakan fungsi asli seperti
jdmonthname()
:sumber
jdmonthname(3, CAL_MONTH_GREGORIAN_LONG);
kembaliNovember
Anda bisa menggunakan fungsi monthname () dalam SQL.
SELECT nama bulan (date_column) dari grup tabel menurut nama bulan (date_column)
sumber