I want to calculate the total hours and minutes between two given times.
The condition is I want to calculate only working hours i.e. from 09:30 to 18:00 Hrs and also want to exclude saturdays and sundays if they lie between the two times given
I want to calculate the total hours and minutes between two given times.
The condition is I want to calculate only working hours i.e. from 09:30 to 18:00 Hrs and also want to exclude saturdays and sundays if they lie between the two times given
function calcTime($startTime,$endTime){
//==1.===Time Diff D,H,M,S===========
$diff=diffInTime($startTime,$endTime);
//==2.===Time Separation=============
$sep=explode(",",$diff);
$days=$sep[0];
$hours=$sep[1];
$mins=$sep[2];
$secs=$sep[3];
$totSecs=($days*24*60*60)+($hours*60*60)+($mins*60)+$secs;
$invalidTime=$days*((15*3600)+1800);
//$mor=strtotime('09:30:00');
//$eve=strtotime('18:00:00');
$mor=(9*3600)+1800;
$eve=18*3600;
echo "invalidtime".$invalidTime."<br>";
$startExplode=explode(":",date("H:i:s",$startTime));
$startTimeToday=$startExplode['0']*3600+$startExplode['1']*60+$startExplode['2'];
$endExplode=explode(":",date("H:i:s",$endTime));
$endTimeToday=$endExplode['0']*3600+$endExplode['1']*60+$endExplode['2'];
echo "starttime".$startTime."<br>";
echo "endtime".$endTime."<br>";
echo "mor".$mor."<br>";
echo "eve".$eve."<br>";
if($startTimeToday<$mor){
if($endTimeToday<$mor){
//==1a.===When checked/endtime is before morning===========
if($endTimeToday<$startTimeToday){
$invalidTime=$invalidTime+($mor-$startTimeToday)+(6*3600)+$endTimeToday;
}
else if($endTimeToday>$startTimeToday){
$invalidTime=$invalidTime+($endTimeToday-$startTimeToday);
}
}
else if(($endTimeToday>$mor)&&($endTimeToday<$eve)){
//==2a.===When checked/endtime is beetween working hours===
$invalidTime=$invalidTime+($mor-$startTimeToday);
}
else if($endTimeToday>$eve){
//==3a.===When checked/endtime is after evening============
$invalidTime=$invalidTime+($mor-$startTimeToday)+($endTimeToday-$eve);
}
}
else if(($startTimeToday>$mor)&&($startTimeToday<$eve)){
if($endTimeToday<$mor){
//==1b.===When checked/endtime is before morning===========
echo $invalidTime=$invalidTime+(6*3600)+$endTimeToday;
}
else if(($endTimeToday>$mor)&&($endTimeToday<$eve)){
//==2b.===When checked/endtime is beetween working hours===
if($endTimeToday<$startTimeToday){
$invalidTime=$invalidTime+((15*3600)+1800);
}
else if($endTimeToday>$startTimeToday){
$invalidTime=$invalidTime;
}
}
else if($endTimeToday>$eve){
//==3b.===When checked/endtime is after evening============
$invalidTime=$invalidTime+($endTimeToday-$eve);
}
}
else if ($startTimeToday>$eve){
if($endTimeToday<$mor){
//==1c.===When checked/endtime is before morning===========
echo $invalidTime=$invalidTime+((24*3600)-$startTimeToday)+$endTimeToday;
}
else if(($endTimeToday>$mor)&&($endTimeToday<$eve)){
//==2c.===When checked/endtime is beetween working hours===
$invalidTime=$invalidTime+((24*3600)-$startTimeToday)+((9*3600)+1800);
}
else if($endTimeToday>$eve){
//==3c.===When checked/endtime is after evening============
if($endTimeToday<$startTimeToday){
$invalidTime=$invalidTime+((24*3600)-$endTimeToday)+((9*3600)+1800)+($endTimeToday-$eve);
}
else if($endTimeToday>=$startTimeToday){
$invalidTime=$invalidTime+($endTimeToday-$startTimeToday);
}
}
}
$validTime=$totSecs-$invalidTime;
echo "<br><br>Total Time Taken is ".$totSecs."<br>";
echo "InValid seconds are ".$invalidTime."<br><br>";
echo "Valid seconds are ".$validTime.", or<br>";
echo "Valid minutes are ".($validTime/60).", or<br>";
echo "Valid hours are ".($validTime/3600)."<br>";
}