Php 两个日期之间的差异,跳过周六和周日
在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
$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我还以为是你在找的。我在代码中添加了一个=来修复它。