两个日期之间的差异,并跳过周六和周日

时间:2017-08-02 06:25:20

标签: php date datetime datediff

在php中,我使用此代码计算两个日期之间的天数差异。

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');

我得到了结果,但如果它们处于这些日期之间,是否有任何方法可以跳过周六和周日。

3 个答案:

答案 0 :(得分:0)

请参阅我这样做及其正常工作 你可以试试这个。

$day = date('l',strtotime($datte));
if($day == 'Saturday' || $day == 'Sunday')
{
 //SOME ACTION
}else{
  //SOME ACTION
}

其中L是定义日全名。

答案 1 :(得分:0)

我创建了一个数组,其中包含当天的所有日期数字表示(0-6为sun-sat) 如果它在1-5(mon-fri)之间加入数组。
然后,数组的计数是没有星期日的天数。

<?php

$startdate = '2017-08-04';

$datetime1 = new DateTime($startdate);
$datetime2 = new DateTime('2017-08-07');
$interval = $datetime1->diff($datetime2);
$days =  $interval->format('%a');

$arr =array();
for($i=0;$i<=$days;$i++){
    $day = date("w Y-m-d l", strtotime($startdate) + $i*86400); 
    if((int)$day[0] >= 1 && (int)$day[0] <= 5 ) $arr[] = $day;
}

var_dump($arr);

echo "days excluding sat-sundays " . count($arr);

https://3v4l.org/pPLpb

编辑添加=也计算结束日期。
编辑;有些东西与我以前的strtotime没有用,它给出了正确的结果,但周二计算为星期一 改为将其更改为$ i * 86400,并在阵列中添加更多数据以进行调试。

答案 2 :(得分:-1)

假日者周六举行,周日举行; w没有假期的距离

<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-12-13');
$interval = $datetime1->diff($datetime2);
$distance=$interval->format('%R%a');
$hoildays=($distance/7)*2;//  *2 cuz saturday and sunday
$W=$distance-($distance/$hoildays);
echo $W;
?>