यहां आपके लिए एक संभावित विकल्प है। strtotime
शक्तिशाली है, और सिंटैक्स में वास्तव में उपयोगी बिट्स शामिल हैं
जैसे व्यापक सापेक्ष समय और दिनांक शब्दांकन
।
आप इसका उपयोग "के" प्रारूप का उपयोग करके किसी विशिष्ट महीने के Nth विशिष्ट सप्ताह के दिनों में पहला उत्पन्न करने के लिए कर सकते हैं। यहां date_create
का उपयोग करते हुए एक उदाहरण दिया गया है
एक DateTime
का आह्वान करने के लिए ऑब्जेक्ट, लेकिन नियमित रूप से पुराना strtotime
उसी तरह काम करता है:
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
यदि आप अमान्य के लिए पूछते हैं, तो यह महीने में भी ओवरफ्लो हो जाएगा:
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
ध्यान दें कि यह केवल ऑर्डिनल नंबर के साथ काम करता है शब्दांकन आप दुर्भाग्य से "पहला" या "तीसरा" पास नहीं कर सकते।
एक बार जब आप इसका उपयोग उचित Nth कार्यदिवस को हथियाने के लिए करते हैं, तो आप बस आवश्यक कार्यदिवसों की संख्या को स्किप करने के लिए जोड़ सकते हैं (एक सप्ताह के लिए 7, दो के लिए 14, तीन के लिए 21, आदि) जब तक निर्दिष्ट समाप्ति तिथि या निर्दिष्ट संख्या सप्ताह बीत चुके हैं। एक बार फिर, strtotime
बचाव के लिए, सापेक्षता को एक साथ जोड़ने के लिए दूसरे तर्क का उपयोग करते हुए:
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
(मेरी स्थानीय प्रति भी स्वीकार की गई '+14 days First Thursday of March 2011'
, लेकिन यह थोड़ा अजीब लगा।)