Inilah alternatif yang mungkin untuk Anda. strtotime
sangat kuat, dan sintaksnya menyertakan bit yang sangat berguna
seperti kata-kata waktu dan tanggal relatif komprehensif
.
Anda dapat menggunakannya untuk menghasilkan hari kerja spesifik pertama hingga ke-N pada bulan tertentu dengan menggunakan format " dari ". Berikut adalah contoh menggunakan date_create
untuk memanggil DateTime
objek, tetapi strtotime
lama biasa bekerja dengan cara yang sama:
php > $d = date_create('Last Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 25 2011 00:00:00
php > $d = date_create('First Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 04 2011 00:00:00
php > $d = date_create('First Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 06 2011 00:00:00
php > $d = date_create('Fourth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00
php > $d = date_create('Last Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00
Itu juga akan meluap bulan, jika Anda meminta yang tidak valid:
php > $d = date_create('Ninth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday May 01 2011 00:00:00
Perhatikan bahwa ini hanya berfungsi dengan nomor urut susunan kata. Sayangnya, Anda tidak dapat melewati "1" atau "3rd".
Setelah Anda menggunakan ini untuk mengambil hari kerja ke-N yang tepat, Anda dapat dengan mudah menambahkan jumlah hari kerja yang diperlukan untuk dilewati (7 untuk satu minggu, 14 untuk dua, 21 untuk tiga, dll) seperti yang diperlukan hingga tanggal akhir yang ditentukan atau jumlah yang ditentukan minggu telah berlalu. Sekali lagi, strtotime
untuk menyelamatkan, menggunakan argumen kedua untuk menyatukan relatifitas:
php > echo date('l F d Y H:i:s', strtotime('+14 days', strtotime('First Thursday of March 2011')));
Thursday March 17 2011 00:00:00
(Salinan lokal saya juga menerima '+14 days First Thursday of March 2011'
, tapi rasanya agak aneh.)