2017-08-26 12 views
-1

土曜日と日曜日、または曜日だけが罰金に含まれないようにするには、罰金には含まれません。私はborrowdate、currentdate、returndateをデータベースから完全に機能させるのが良いと思う。ありがとう!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'"); 
} 
+0

週にはwを使用します。日曜日は0、Sartudayは6です – peter

+0

@peterあなたのコードの例を教えていただけますか? –

+0

** w **フラグに渡される 'DateTime'オブジェクトでフォーマット関数を呼び出すことができ、その結果に基づいて曜日を指定することができます。 @vladatrの答えが正確に – peter

答えて

0

あなたは勤務日数を数え、罰金を計算する必要があります。

$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

私はすでにあなたのreturnDateを私のものに変更しています。今日はすでにcurrentdateに変更されていますが、週末をまだカウントダウンしています。最後にエラーが発生しているので削除します。 –

+0

Aha ...問題は>曜日を週に変換する。記号==はそれを行います。 – vladatr

+0

何か間違っているhttp://imgur.com/a/4dZU8 –

0

これが最初の現在の日付のDAYOFWEEKを見つけると、その日曜日または土曜日のかどうかをチェック好きです。曜日の形式で返される値は数値になります。 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']; 
+0

コメントは議論やセッションのデバッグのためのものではありません。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/152930/discussion-on-answer-by-anil-shrestha-how-to-prevent-weekend-include-in-fines-米国)。追加の問題がある場合は、質問を編集して関連情報を含めます。 –

関連する問題