如何使用 php 不计算周末的惩罚



我想防止在星期六和星期日或仅星期日不包括在罚款中时计算罚款。我认为如果我们使用借用日期、当前日期和返回日期来从我的数据库中完全发挥作用会更好谢谢!

$borrowdate = new Datetime($row['date_return']);
$returndate = new Datetime($row['due_date']); 
$currentdate = new Datetime();        
$fines = 0;
if($currentdate > $returndate){
$days = $borrowdate->diff($returndate ?? $currentdate, true)->days;
echo "₱ ". $fines = $days > 0 ? intval(floor($days)) * 15 : 0;
$fi = $row['borrow_details_id'];
mysqli_query($dbcon,"update borrowdetails set fines='$fines' where borrow_details_id = '$fi'");
}

你应该计算工作日的数量,然后计算你的罚款。

$returnDate= new DateTime( '2017-08-17' );
$today= new DateTime( '2017-08-21 00:23:44' );
$returnDate->setTime(0,0);
$today->setTime(0,0);
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($returnDate, $interval, $today);
$weekendDays = 0;
$totalDays = 0;
foreach ( $period as $p ) {
$totalDays++;
if($p->format( "w" )==0 or $p->format( "w" )==6) $weekendDays++; //6 - saturday, 0 - sunday
}
echo "<p>Total  days: $totalDays</p><p>Weekend days: $weekendDays </p>";
$fines = ($totalDays - $weekendDays) * 15;
echo "₱ ". $fines;
$fi = $row['borrow_details_id'];
mysqli_query($dbcon,"update borrowdetails set fines='$fines' where borrow_details_id = '$fi'");

首先找出当前日期的星期几,并检查是星期日还是星期六。从星期几返回的值将以数字表示。0 表示星期日,到 6 表示星期六。

$borrowdate = new Datetime($row['date_return']);
$returndate = new Datetime($row['due_date']); 
$currentdate = new Datetime(); 
$dayofweek = date('w', $currentdate->getTimestamp());       
$fines = 0;
if($currentdate > $returndate){
if($dayofweek != 0){
$days = $borrowdate->diff($returndate ?? $currentdate, true)->days;
echo "₱ ". $fines = $days > 0 ? intval(floor($days)) * 15 : 0;
$fi = $row['borrow_details_id'];
mysqli_query($dbcon,"update borrowdetails set fines='$fines' where borrow_details_id = '$fi'");
}

}
$newquery = mysqli_query($dbcon,"select fines from borrowdetails where borrow_details_id = '$fi'");
$row = mysqli_fetch_assoc($newquery);
echo $row['fines'];

最新更新