Bagaimana saya bisa mendapatkan hari terakhir bulan ini di PHP?
Diberikan:
$a_date = "2009-11-23"
Saya ingin 2009-11-30; dan diberikan
$a_date = "2009-12-23"
Saya ingin 2009-12-31.
t
mengembalikan jumlah hari pada bulan tanggal tertentu (lihat dokumen untukdate
):
$a_date = "2009-11-23";
echo date("Y-m-t", strtotime($a_date));
DateTime
Anda dapat melakukan sesuatu seperti ini:(new DateTime('2009-11-23'))->modify('last day of')
Kode yang menggunakan strtotime () akan gagal setelah tahun 2038. (seperti yang diberikan pada jawaban pertama di utas ini) Sebagai contoh coba gunakan yang berikut ini:
Ini akan memberikan jawaban sebagai: 1970-01-31
Jadi alih-alih strtotime, fungsi DateTime harus digunakan. Kode berikut akan berfungsi tanpa masalah Tahun 2038:
sumber
strtotime
kode memberi saya hasil ini: 2040-11-30Saya tahu ini sedikit terlambat tetapi saya pikir ada cara yang lebih elegan untuk melakukan ini dengan
PHP 5.3+
menggunakan DateTime kelas :sumber
$date = new DateTime('last day of 2020-2');
$date = DateTime::createFromFormat('m/d/Y', '1/10/2014');
Ada juga fungsi built in PHP cal_days_in_month () ?
sumber
Ini seharusnya bekerja:
sumber
Apa yang salah - Yang paling elegan untuk saya gunakan
DateTime
Saya heran saya tidak melihat
DateTime::createFromFormat
, satu kalimatsumber
Anda bisa membuat tanggal untuk yang pertama bulan berikutnya, dan kemudian gunakan
strtotime("-1 day", $firstOfNextMonth)
sumber
mktime(0, 0, 0, $month+1, 0, $year);
strtotime()
danmktime()
tidak dianjurkan. bug yang dikenal seperti penentuan tanggal di tepi bulan dan perhitungan tahun kabisat. KarenaDateTime
tersedia, Anda harus menggunakan kelas ini untuk menghindari masalah di masa depan. Seperti yang dikatakan berkali-kali sebelum saya, kedua fungsi inistrtotime()
danmktime()
akan gagal setelah 2038. Itu sebabnya saya menurunkan ...Coba ini, jika Anda menggunakan PHP 5.3+,
Untuk menemukan bulan depan tanggal terakhir, ubah sebagai berikut,
dan seterusnya..
sumber
Solusi Anda ada di sini ..
sumber
31
untukSeptember
yang seperti yang Anda tahu itu tidak benar.Anda dapat menemukan hari terakhir bulan ini beberapa cara. Tapi cukup Anda bisa melakukan ini menggunakan fungsi PHP strtotime () dan date (). Saya membayangkan kode akhir Anda akan terlihat seperti ini:
Demo Langsung
Tetapi jika Anda menggunakan PHP> = 5.2 Saya sangat menyarankan Anda menggunakan objek DateTime yang baru. Contohnya seperti di bawah ini:
Demo Langsung
Anda juga dapat menyelesaikan ini menggunakan fungsi Anda sendiri seperti di bawah ini:
sumber
Jika Anda menggunakan ekstensi Carbon API untuk PHP DateTime, Anda bisa mendapatkan hari terakhir bulan itu dengan:
sumber
$date->day = 0;
Anda juga bisa menggunakannya dengan datetime
sumber
sumber
Menggunakan Zend_Date sangat mudah:
sumber
sumber
Berikut ini adalah fungsi lengkap:
Ini akan menghasilkan berikut:
Output: 28
sumber
Ada beberapa cara untuk mendapatkan hari terakhir bulan ini.
sumber
Saya terlambat tetapi ada beberapa cara mudah untuk melakukan ini seperti yang disebutkan:
Menggunakan mktime () adalah tujuan saya untuk kontrol penuh atas semua aspek waktu ... IE
Menyetel hari ke 0 dan menaikkan bulan 1 akan memberi Anda hari terakhir bulan sebelumnya. Angka 0 dan negatif memiliki pengaruh yang sama dalam argumen yang berbeda. PHP: mktime - Manual
Seperti yang dikatakan beberapa orang, strtotime bukanlah cara yang paling solid untuk digunakan dan sedikit jika tidak ada yang mudah serbaguna.
sumber
Saya menggunakan strtotime dengan cal_days_in_month sebagai berikut:
sumber
Saya telah membungkusnya dengan kelas pembantu waktu saya di sini https://github.com/normandqq/Date-Time-Helper menggunakan
$dateLastDay = Model_DTHpr::getLastDayOfTheMonth();
Dan itu dilakukan
sumber
Cara lain menggunakan mktime dan bukan tanggal ('t'):
Jadi cara ini menghitung apakah itu 31,30 atau 29
sumber
Ekstensi Carbon API untuk PHP DateTime
atau
akan kembali
sumber
http://zkinformer.com/?p=134
sumber
Ini cara yang jauh lebih elegan untuk mendapatkan akhir bulan:
sumber
Anda dapat menggunakan "
t
" fungsi tanggal untuk mendapatkan jumlah hari di bulan tertentu.Kode akan menjadi seperti ini:
Kode ini dijelaskan sendiri. Jadi harap ini membantu.
sumber