Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两个日期之间的差异,跳过周六和周日_Php_Date_Datetime_Datediff - Fatal编程技术网

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

Php 两个日期之间的差异,跳过周六和周日,php,date,datetime,datediff,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'); 我得到了结果,但是如果周六和周日在这两个日期之间,有没有办法跳过呢; 保持距离,没有假期 <?php $da

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

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

我得到了结果,但是如果周六和周日在这两个日期之间,有没有办法跳过呢; 保持距离,没有假期

<?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;
?>

看,我这样做,它的工作正常 你可以试试这个

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

其中L是定义日期全名。

我创建了一个数组,其中包含sun-sat的0-6天的所有日期数字表示形式。 如果在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);
编辑added=以同时计算结束日期。 编辑我上一次的strotime有点不起作用,它给出了正确的结果,但将周二计算为周一。
改为$i*86400,并在数组中添加更多数据以进行调试。

此代码是否跳过星期六和星期日?我看不出它是@Vivek?这里给出的答案有问题吗?这个代码不起作用。它只假设每七天有两个星期六星期天。如果搜索时间少于七天或仅一个周末,则搜索将失败。如果第二个日期是2017-08-07,则应给出2,但给出1days@Vivek我还以为是你在找的。我在代码中添加了一个=来修复它。