2010-06-02 11 views
10

की संख्या गिना जा रहा है मैं कैसे php में दो दिनांकों के बीच शनिवार और रविवार की संख्या की गणना कर सकते हैं?शनिवार और रविवार

वहाँ उस उद्देश्य के लिए किसी भी इनबिल्ट समारोह है?

+0

की [व्यावसायिक दिनों की गणना करें] संभव डुप्लिकेट के साथ आया था (http://stackoverflow.com के लिए कुछ समय के लिए की खोज/प्रश्न/336,127/गणना-व्यवसाय-दिन) –

उत्तर

5

वहाँ एक संबंधित सवाल यहाँ पहले से ही है, Calculate business days

आप इस का उपयोग कर सकते हैं घटाना 7 सप्ताह से सप्ताहांत के दिन, या इसी तरह के प्राप्त करने के लिए।

4

मुझे नहीं लगता कि एक है कि के लिए बनाया है, लेकिन यह काम करना चाहिए:

$startTime = START_TIMESTAMP; 
$endTime = END_TIMESTAMP; 
$time = $startTime; 
$count = 0; 

while(date('w', $time) != 0) { // 0 (for Sunday) through 6 (for Saturday) 
    $time += 86400; 
} 

while($time < $endTime) { 
    $count++; 
    $time += 7 * 86400; 
} 
+0

क्या StartDate में टाइमस्टैम्प शनिवार – nik

+0

आता है यह भी काम करता है, 'तिथि ('w', $ समय) == 0' तो आप दूसरा जबकि और' $ गिनती ++ 'करने के लिए जाना है, तो , आपके पास कम से कम एक शनिवार है। –

+1

'के बजाय (दिनांक ('डब्ल्यू', $ समय)! = 0) 'आप केवल $ $ = स्ट्रेटोटाइम (" शनिवार ")' या '$ time = स्ट्रेटोटाइम (" रविवार ")' कर सकते हैं। –

0
<?php 
date_default_timezone_set("Europe/Lisbon"); 
$d1 = new DateTime("2009-06-01"); /* inclusive */ 
$d2 = new DateTime("2009-07-01"); /* exclusive */ 

$interval = $d2->diff($d1); 
$number_of_days = $interval->format("%d"); 

$number_of_weekends = $number_of_days/7; 
$remainder = $number_of_days % 7; 

if ($remainder >=2 && $d1->format("D") == "Sat") 
    $number_of_weekends++; 
elseif ($d1->format("w") + $remainder >= 8) 
    $number_of_weekends++; 

मैं पिछले हालत में एक के बाद चूक गए हों, विभिन्न प्रारंभिक तिथियों के साथ यह जांच करना न भूलें। (यदि आप कोई त्रुटि खोजते हैं तो इस उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें)।

0

दिन निश्चित रूप से नहीं है कि के लिए समारोह में बनाया गया है, लेकिन आप पाश करने के लिए उपयोग कर सकते हैं strtotime

$start = strtotime('2010-01-01'); 
$end = strtotime('2010-01-09'); 

function numWeekdays($start_ts, $end_ts, $day, $include_start_end = false) { 

    $day = strtolower($day); 
    $current_ts = $start_ts; 
    // loop next $day until timestamp past $end_ts 
    while($current_ts < $end_ts) { 

     if(($current_ts = strtotime('next '.$day, $current_ts)) < $end_ts) { 
      $days++; 
     } 
    } 

    // include start/end days 
    if ($include_start_end) { 
     if (strtolower(date('l', $start_ts)) == $day) { 
      $days++; 
     } 
     if (strtolower(date('l', $end_ts)) == $day) { 
      $days++; 
     } 
    } 

    return (int)$days; 

} 

echo numWeekDays($start, $end, 'saturday', false); 
1

हम सभी को KISS करते हैं (यह सरल रखें बेवकूफ)। इसे इतना जटिल क्यों बनाते हैं?

function countWeekendDays($start, $end) 
{ 
    // $start in timestamp 
     // $end in timestamp 


    $iter = 24*60*60; // whole day in seconds 
    $count = 0; // keep a count of Sats & Suns 

    for($i = $start; $i <= $end; $i=$i+$iter) 
    { 
     if(Date('D',$i) == 'Sat' || Date('D',$i) == 'Sun') 
     { 
      $count++; 
     } 
    } 
    return $count; 
    } 
0

मैं एक सरल उपाय है कि काम किया है और अपने ही लिखने का फैसला किया है और इस

 $start = date('Y-m-d'); 
     $end = date('Y-m-d', strtotime($start.' +1 year')); 
     $current = $start; 
     $count = 0; 

     while($current != $end){ 
      if(date('l', strtotime($current)) == 'Saturday'){ 
       $count++; 
      } 

      $current = date('Y-m-d', strtotime($current.' +1 day')); 
     }; 

     echo $count; 
संबंधित मुद्दे