बिट इस बारे में अटकने के बारे में अटक गया। वर्तमान माह को देखते हुए, मुझे हर महीने चौथे शनिवार की तारीख वापस करने की जरूरत है।वर्तमान महीने में चौथे शनिवार की तारीख को
उदा। यह महीना 20 फरवरी होगा, अगला 27 मार्च होगा।
धन्यवाद
बिट इस बारे में अटकने के बारे में अटक गया। वर्तमान माह को देखते हुए, मुझे हर महीने चौथे शनिवार की तारीख वापस करने की जरूरत है।वर्तमान महीने में चौथे शनिवार की तारीख को
उदा। यह महीना 20 फरवरी होगा, अगला 27 मार्च होगा।
धन्यवाद
मैं नहीं एक PHP सांकेतिक शब्दों में बदलनेवाला, तथापि, ऐसा लगता है strtotime क्या आप के बाद कर रहे हैं है।
आप स्ट्रेटोटाइम ("चौथा शनिवार") का उपयोग कर सकते हैं और यह 4 वें शनिवार को वापस आ जाएगा।
strtotime
दस्तावेज़ देखें।
संपादित करें:
बस जवाब पूरा करने के लिए, टॉम और पॉल डिक्सन के लिए धन्यवाद
date('dS F',strtotime('Fourth Saturday '.date('F o')));
लिंक के अनुसार, कोई संकेत नहीं है कि" चौथा शनिवार "सटीक रूप से विश्लेषण करेगा। – Elie
हालांकि यह काम करता है। मैंने PHP स्रोत की जांच की स्पष्टीकरण के लिए, लेकिन यह एक पठनीय yacc जेनरेट पार्सर है। इसका उल्लेख करने के लिए मेरा जवाब संशोधित किया गया है। –
हाँ यह काम करता है, आप डेट ('डीएस एफ', स्ट्रेटोटाइम ('चौथा शनिवार' .डेट ('एफ ओ') जैसी कुछ कर सकते हैं।)); और यह एक इलाज की तरह काम करता है। – Tom
महीने के पहले शनिवार का पता लगाएं, और फिर उस करने के लिए तीन सप्ताह जोड़ें।
यदि आपको नहीं पता कि पहला शनिवार कब है (या, बल्कि, विशेष रूप से दिन के नाम से संबंधित तारीख को नहीं जानते), तो आप Doomsday algorithm पर देखना चाहेंगे, जिसे मैंने आसानी से दूसरे के लिए देखा कुछ हद तक इसी तरह के मुद्दे के साथ पोस्ट करें।
चौथे शनिवार के लिए सबसे पुरानी तारीख महीने का 22 वां है। तो 22 वें देखें, देखें कि यह सप्ताह का दिन है, अगर यह शनिवार नहीं है, तो दिन में एक दिन जोड़ें, और फिर से जांचें, जब तक आपको कोई मैच न मिले (अधिकतम आपको 6 दिनों की जांच करनी होगी)।
(लगता है 5.2 की आवश्यकता है)
$date = getdate();
$date-> setDate($date->format('Y'), $date->format('Y'), '1'); // 1st of month.
while ($date->format('w' != 6)
$date->modify("+1 day");
$date->modify("+21 day"); // date is now on the fourth saturday
यह क्यों कम हो गया? यह "! = शनिवार" होना चाहिए "!= रविवार ", लेकिन प्रक्रिया सही दिखती है ... –
पूरी तरह से सैट/सन चीज से चूक गई, tah – ShuggyCoUk
आप strtotime उपयोग कर सकते हैं "अगले शनिवार" एक प्रारंभिक तिथि के आधार पर लगता है। कि प्रारंभिक तिथि जल्द से जल्द संभव पूर्ववर्ती दिन (21) हम जवाब पाने से पहले दिन है ...
//required year/month
$yyyymm="2009-01";
//find next saturday after earliest possible date
$t=strtotime("next saturday", strtotime("{$yyyymm}-21"));
//here you go!
echo "4th saturday of $yyyymm is ".strftime("%Y-%m-%d",$t)."\n";
जल्द से जल्द संभव किसी भी महीने में एक दिन के 4 दोहराने 22 (1,8,15 है, 22), आखिरी संभव 4 वां दोहराव 28 वां (7,14,21,28) है।
संपादित: यद्यपि यह दस्तावेज में स्पष्ट नहीं है, तो आप "चौथे शनिवार" भी अनुरोध कर सकते हैं - आधार के रूप में महीने के zeroth दिन का उपयोग करें:
$t=strtotime("fourth saturday", strtotime("{$yyyymm}-00"));
या आधार समय को छोड़ देते हैं और माह और वर्ष का सीधे उल्लेख:
$t=strtotime("fourth saturday feb 2009");
रॉबिन के लिए टोपी की टिप दिवस खोलना के लिए "मैं एक PHP सांकेतिक शब्दों में बदलनेवाला नहीं कर रहा हूँ" है कि :)
आपका समाधान सही है, लेकिन आपकी दूसरी वाक्य में मुझे लगता है कि आपका मतलब है "... नवीनतम संभव तीसरा शुक्रवार (21 वीं) ..."। :-) –
इसे बेहतर हां, संशोधन –
function fourth_saturday($year, $month)
{
$info = localtime(mktime(0, 0, 0, $month , 1, $year));
return 28 - $info[6];
}
संयोग से यह फरवरी और मार्च दोनों के लिए 28 वां होगा। – kmkaplan
इतनी आकस्मिक रूप से नहीं दिया गया कि फरवरी में 28 दिन हैं जो 7 तक विभाजित हैं। पाठ्यक्रम के लीप वर्षों तक नहीं पकड़ते हैं। –