2013-06-11 4 views
7

महीने के दूसरे और चौथे शनिवार को कैसे खोजें। jun 1013 2 और 4 में शनिवारमहीने के दूसरे और चौथे शनिवार को

may 2nd sat 11 
may 4th sat 25 
june 2nd sat 15 
june 4th sat 29 

यह may महीने में सही जवाब देता है, लेकिन नहीं june 2013, 8 और 22 होना चाहिए -:

echo "may 2nd sat ".date('d', strtotime('may 2013 second saturday')); 
echo '<br/>may 4th sat '.date('d', strtotime('may 2013 fourth saturday'));         
echo '<br/>june 2nd sat '.date('d', strtotime('june 2013 second saturday')); 
echo '<br/>june 4th sat '.date('d', strtotime('june 2013 fourth saturday')); 

यह निम्न उत्पादन देता है -: मैं इन पंक्तियों में लिखा था क्रमशः। मैं इस मुद्दे को कैसे हल कर सकता हूं।

उत्तर

7

मुझे यकीन है कि क्यों तुम्हारा काम नहीं करेगा नहीं कर रहा हूँ, लेकिन इस कोशिश, यह मेरे लिए काम किया:

echo '<br/>june 2nd sat '.date('d', strtotime('second sat of june 2013')); 
echo '<br/>june 4th sat '.date('d', strtotime('fourth sat of june 2013')); 

यह PHP manual page

+0

ऊपर के लिंक मुझे काम नहीं करता है में इसका इस्तेमाल करते हैं। इसके बजाय इसका उपयोग करें: http://ca1.php.net/manual/en/datetime.formats.relative.php – Stan

+0

धन्यवाद, मैंने लिंक – periklis

1

इन दिनों में "first sat of July 2008" उदाहरण पर आधारित है मेरी पसंदीदा तरीका -__

class MyDateTime extends DateTime 
{ 
    /** 
    * Returns a MyDateTime object set to 00:00 hours on the nth occurence 
    * of a given day of the month 
    * 
    * @param string $n nth day required, eg first, second etc 
    * @param string $day Name of day 
    * @param mixed $month Month number or name optional defaults to current month 
    * @param mixed $year optional defaults to current year 
    * 
    * @return MyDateTime set to last day of month 
    */ 
    public function nthDayOfMonth($n, $day, $month = null, $year = null) 
    { 
     $timestr = "$n $day"; 
     if(!$month) $month = $this->format('M'); 
     $timestr .= " of $month $year"; 
     $this->setTimestamp(strtotime($timestr)); 
     $this->setTime(0, 0, 0); 
     return $this; 
    } 
} 
$dateTime = new MyDateTime(); 
echo $dateTime->nthDayOfMonth('second', 'Sun', 'Jul', 2011)->format('Y-m-d'); 

आउटपुट:: PHP के DateTime object विस्तार करने के लिए है -

2011-07-10 
4

मैं क्यों यह इस त्रुटि howver मैं समाधान मिल गया है कैसे सही जवाब

echo date('d',strtotime('+1 week sat may 2013')).'<BR>'; 
echo date('d',strtotime('+3 week sat may 2013')).'<BR>'; 
echo date('d',strtotime('+1 week sat june 2013')).'<BR>'; 
echo date('d',strtotime('+3 week sat june 2013')).'<BR>'; 

यह समाधान ठीक काम करता है और उचित परिणाम से पता चलता पाने के लिए खड़ी कर रहा है पता नहीं है।

आउटपुट:

11 
25 
08 
22 
1

तो फिर तुम 5.2.7 से पहले, संस्करण 5.2.7 के नीचे एक PHP संस्करण चलना चाहिए manual states

PHP 5 में के रूप में, किसी दिए गए का अनुरोध एक महीने में दिए गए सप्ताहांत की घटना, जहां उस सप्ताह का दिन महीने का पहला दिन गलत सप्ताह में लौटाए गए टाइमस्टैंप में जोड़ देगा। इसे 5.2.7 और बाद के संस्करणों में ठीक किया गया है।

तो यदि आप अपना PHP संस्करण अपडेट कर सकते हैं जो सबसे अच्छा समाधान होगा। अन्यथा आप कुछ ऐसा देख सकते हैं।

<?php 
function showDay($month, $year, $day, $count) 
{ 
    $list = array(1=>'first',2=>'second',3=>'third',4=>'fourth',5=>'fifth'); 
    $first = date('d', strtotime($month . ' ' . $year . ' ' . $list[1] .' '.$day)); 
    $show= ($first>7) ? $count-1 : $count; 
    return date('d', strtotime($month . ' ' . $year . ' ' . $list[$show] .' '.$day)); 
} 

echo '<br/>june 2nd sat '.showDay('june', 2013, 'saturday', 2); 
?> 
+0

को अद्यतन किया है ओपी को 'php-5.4' के रूप में टैग किया गया है। लेकिन यह उपयोगी जानकारी है वैसे भी, – periklis

1

मैं आमतौर पर स्ट्रिंग के टुकड़े पर भरोसा नहीं करता हूं। कस्टम-निर्मित फ़ंक्शन के बारे में कैसे?

function getSaturdayDay($year, $month, $position) { 
    $firstDay = date('w', mktime(0, 0, 0, $month, 1, $year)); 
    $diff = 6 - $firstDay; 

    return 1 + $diff + $position * 7; 
} 

और अपने संदर्भ

echo "may 2nd sat " . getSaturdayDay(2013, 5, 1); 
echo '<br/>may 4th sat ' . getSaturdayDay(2013, 5, 3);       
echo '<br/>june 2nd sat ' . getSaturdayDay(2013, 6, 1); 
echo '<br/>june 4th sat ' . getSaturdayDay(2013, 6, 3); 
+0

को जानना अच्छा है अब तक का सबसे विश्वसनीय उत्तर – user3338098

संबंधित मुद्दे