请,我需要这个代码的帮助。我已经在Stakeoverflow中检查了其他人,但它不是可混合的,因此这个问题。我想生成两个日期之间的所有工作/工作日。我找到了一个代码,但它产生了所有的日子,包括周末。如何从列表中消除周末或确保生成的列表仅适用于工作日?
<?php
$start_Date = date('Y-m-d');
$end_Date = date('Y-m-d', strtotime('30 weekdays'));
//echo $start_Date."<br/>";
//echo $end_Date."<br/>";
// Specify the start date. This date can be any English textual format
$date_from = $start_Date;
$date_from = strtotime($date_from); // Convert date to a UNIX timestamp
// Specify the end date. This date can be any English textual format
$date_to = $end_Date;
$date_to = strtotime($date_to); // Convert date to a UNIX timestamp
// Loop from the start date to end date and output all dates inbetween
$c = 0;
for ($i = $date_from; $i <= $date_to; $i += 86400) {
$c++;
echo $c . "=> " . date("Y-m-d", $i) . '<br />';
}
我希望生成30天,但是使用此代码,我将获得42天。周末已被添加,而不是仅在工作日。
答案 0 :(得分:2)
只需将其添加到循环中:
$w = date('w',$i);// day of week - Sunday == 0, Saturday == 6
if($w == 0 || $w == 6){
continue;
}
答案 1 :(得分:1)
您可能需要获取星期几,例如日期(“D”),然后在for循环中使用它来检查......这样的事情?:
$Weekends = array("Sat","Sun");
for....
$DayOfWeek = date("D",$i);
if(!in_array($DayOfWeek, $Weekend)){
// increment...
}
答案 2 :(得分:1)
您的代码几乎只能添加一个if if check in your code
你的代码
for ($i = $date_from; $i <= $date_to; $i += 86400) {
$c++;
echo $c . "=> " . date("Y-m-d", $i) . '<br />';
}
请替换那个
for ($i = $date_from; $i <= $date_to; $i += 86400) {
$day = date("w", $i);
if($day != 0 && $day!= 6){ // will continue if not Sunday or Saturday
$c++;
echo $c . "=> " . date("Y-m-d", $i) . '<br />';
}
}
您也可以从php.net
获取帮助由于