如何使用php在库罚款中不计算到期日之前的日期
这是我的库罚款计算代码如何使用php在库罚款中不计算到期日之前的日期,php,Php,这是我的库罚款计算代码 $currentdate= date('Y/m/d'); $start = new DateTime($returndate=$row['due_date']); <-- from database $end = new DateTime($currentdate); $days= $start->diff($end, true)->days; $fines = $days > 0 ? intval(floor($days)) * ₱10 : 0
$currentdate= date('Y/m/d');
$start = new DateTime($returndate=$row['due_date']); <-- from database
$end = new DateTime($currentdate);
$days= $start->diff($end, true)->days;
$fines = $days > 0 ? intval(floor($days)) * ₱10 : 0;
$currentdate=日期('Y/m/d');
$start=newdatetime($returndate=$row['due_date']);差异($end,true)->天;
$罚款=$天>0?intval(最低(天))*₱10:0;
我想在到期日后计算每天借书的成本₱10,但它只是计算了当天的成本,显示为抱歉我是php编码的初学者谢谢你
$end
是currentday,因此即使currentdate小于duedate,它也会计算罚款。您需要的是,如果currentday大于duedate,则计算罚款
$currentdate = date('Y/m/d');
$start = new DateTime($returndate=$row['due_date']); <-- from database
$end = new DateTime($currentdate);
if(strtotime($currentdate) > strtotime($returndate)){
$days= $start->diff($end, true)->days;
$fines = $days > 0 ? intval(floor($days)) * 10 : 0;
}
$currentdate=日期('Y/m/d');
$start=newdatetime($returndate=$row['due_date']);strottime($returndate)){
$days=$start->diff($end,true)->days;
$fines=$days>0?intval(下限($days))*10:0;
}
strotime()将字符串格式的日期转换为UNIX时间(整数)
您可以在此处测试代码:
编辑:
方法1
$currentdate = date('Y/m/d');
$start = new DateTime($returndate=$row['due_date']); <-- from database
$end = new DateTime($currentdate);
$fines = 0;
if(strtotime($currentdate) > strtotime($returndate)){
$days= $start->diff($end, true)->days;
$fines = $days > 0 ? intval(floor($days)) * 10 : 0;
}
$currentdate=日期('Y/m/d');
$start=newdatetime($returndate=$row['due_date']);strottime($returndate)){
$days=$start->diff($end,true)->days;
$fines=$days>0?intval(下限($days))*10:0;
}
现在,它将显示0的罚款,直到有人超过到期日。(页面中可能看起来杂乱无章)
方法2
$currentdate = date('Y/m/d');
$start = new DateTime($returndate=$row['due_date']); <-- from database
$end = new DateTime($currentdate);
if(strtotime($currentdate) > strtotime($returndate)){
$days= $start->diff($end, true)->days;
$fines = $days > 0 ? intval(floor($days)) * 10 : 0;
}
//some other code I guess...
if(isset($fines)) echo $fines;
$currentdate=日期('Y/m/d');
$start=newdatetime($returndate=$row['due_date']);strottime($returndate)){
$days=$start->diff($end,true)->days;
$fines=$days>0?intval(下限($days))*10:0;
}
//我想还有其他代码。。。
如果(isset($FIELES))回声$FIELES;
此处未设置$FINGES,除非有人超过了到期日,否则将不会响应。此方法可能在页面上看起来最好。但我不知道您的页面是如何设置的。
$end
是currentday,因此即使currentdate小于duedate,它也会计算罚款。您需要的是,如果currentday大于duedate,则计算罚款
$currentdate = date('Y/m/d');
$start = new DateTime($returndate=$row['due_date']); <-- from database
$end = new DateTime($currentdate);
if(strtotime($currentdate) > strtotime($returndate)){
$days= $start->diff($end, true)->days;
$fines = $days > 0 ? intval(floor($days)) * 10 : 0;
}
$currentdate=日期('Y/m/d');
$start=newdatetime($returndate=$row['due_date']);strottime($returndate)){
$days=$start->diff($end,true)->days;
$fines=$days>0?intval(下限($days))*10:0;
}
strotime()将字符串格式的日期转换为UNIX时间(整数)
您可以在此处测试代码:
编辑:
方法1
$currentdate = date('Y/m/d');
$start = new DateTime($returndate=$row['due_date']); <-- from database
$end = new DateTime($currentdate);
$fines = 0;
if(strtotime($currentdate) > strtotime($returndate)){
$days= $start->diff($end, true)->days;
$fines = $days > 0 ? intval(floor($days)) * 10 : 0;
}
$currentdate=日期('Y/m/d');
$start=newdatetime($returndate=$row['due_date']);strottime($returndate)){
$days=$start->diff($end,true)->days;
$fines=$days>0?intval(下限($days))*10:0;
}
现在,它将显示0的罚款,直到有人超过到期日。(页面中可能看起来杂乱无章)
方法2
$currentdate = date('Y/m/d');
$start = new DateTime($returndate=$row['due_date']); <-- from database
$end = new DateTime($currentdate);
if(strtotime($currentdate) > strtotime($returndate)){
$days= $start->diff($end, true)->days;
$fines = $days > 0 ? intval(floor($days)) * 10 : 0;
}
//some other code I guess...
if(isset($fines)) echo $fines;
$currentdate=日期('Y/m/d');
$start=newdatetime($returndate=$row['due_date']);strottime($returndate)){
$days=$start->diff($end,true)->days;
$fines=$days>0?intval(下限($days))*10:0;
}
//我想还有其他代码。。。
如果(isset($FIELES))回声$FIELES;
此处未设置$FINGES,除非有人超过了到期日,否则将不会响应。此方法可能在页面上看起来最好。但是我不知道你的页面是如何设置的。谢谢!!!它计算了,但如果我把当天或到期日之前,它会给出错误@KyousukeKousaka Yes,这是因为罚款美元尚未计算。您可以先确定它是否已设置且仅在设置时回显,也可以将它设置为0并仅在有罚款时更改。我将更新以向您展示这两种方法。@KyousukeKousaka没问题。请记住,我必须删除你的“P”符号。在做数学的时候,在代码中包含这一点是行不通的(至少对我来说是这样)。因此,要么将其添加到
echo“P”中$罚款代码>或者如果它在过去对你有用,就把它放回数学中。谢谢!!!它计算了,但如果我把当天或到期日之前,它会给出错误@KyousukeKousaka Yes,这是因为罚款美元尚未计算。您可以先确定它是否已设置且仅在设置时回显,也可以将它设置为0并仅在有罚款时更改。我将更新以向您展示这两种方法。@KyousukeKousaka没问题。请记住,我必须删除你的“P”符号。在做数学的时候,在代码中包含这一点是行不通的(至少对我来说是这样)。因此,要么将其添加到echo“P”中$罚款代码>或将其放回数学中,如果它在过去对您有效。