2017-04-17 22 views
2

我需要找出兩個日期之間特定日期的計數。 我可以通過使用兩個日期之間的循環來做到這一點,但如果有10年(假設)在日期循環之間的差異將運行10 * 365次。 有沒有更簡單的方法來做到這一點?
在此先感謝找到兩個日期php之間的具體一天的cout沒有使用任何循環?

+0

它是php還是java?你也標記了Java。 –

+0

我只需要邏輯。 PHP將是首選。 –

+0

需要將日期間隔修改到指定的工作日,然後簡單的算術將有所幫助。 – Deadooshka

回答

2

功能countDays($天,$開始,$結束) {

$start = strtotime($start); 
$end = strtotime($end); 
$datediff = $end - $start; 

$days = floor($datediff/(60 * 60 * 24)); 


//get the day of the week for start and end dates (0-6) 
$w = array(date('w', $start), date('w', $end)); 

//get partial week day count 
if ($w[0] < $w[1]) 
{    
    $partialWeekCount = ($day >= $w[0] && $day <= $w[1]); 
}else if ($w[0] == $w[1]) 
{ 
    $partialWeekCount = $w[0] == $day; 
}else 
{ 
    $partialWeekCount = ($day >= $w[0] 
    $day <= $w[1]); 
} 
//first count the number of complete weeks, then add 1 if $day falls in a partial week. 
return intval($days/7) + $partialWeekCount; 

}

函數調用 - countDays (5,「2017-04-14」,「2017-04-21」)

0

您正在尋找date_diff()函數。 date_diff()函數返回兩個DateTime對象之間的差異。

<?php 
$date1=date_create("2013-03-15"); 
$date2=date_create("2013-12-12"); 
$diff=date_diff($date1,$date2); 
echo $diff->format("%R%a days"); 
?> 

查找特定日期(例如:星期天)的發生。請注意:我在星期天使用了7次。您可以使用1日,2日等

$cnt = 0; 
$start = new DateTime("2013-03-15"); 
$end = new DateTime("2013-12-12"); 
$interval = DateInterval::createFromDateString('1 day'); 
$period = new DatePeriod($start, $interval, $end); 
foreach ($period as $dt) 
{ 
    if ($dt->format('N') == 7) 
    { 
     $cnt++; 
    } 
} 
echo $cnt; 
+0

它會給我兩個日期之間的總天數。我需要有多少星期天(或任何一天)在那裏。 –

+0

更新了我的回答 –

+0

我可以通過在兩個日期之間使用循環來做到這一點,但是如果在日期循環之間有10年(假設)的差異將運行10 * 365次。超時執行。有沒有更簡單的方法來做到這一點? –

相關問題