簡體   English   中英

MYSQL/PHP 如何從日期減去 7 天?

[英]MYSQL/PHP how to minus 7 days from date?

我正在使用一個系統,它告訴我用戶在 7 天內將表單中的數據重新提交到數據庫需要多少天。 下面的腳本測量從最初的開始日期/表格最初填寫到完成的天數。

基本上,我正在嘗試回顯 2 個不同的度量,如果從開始日期過去的天數小於 7,那么它應該回顯(number of days) out of 7 past

即過去 7 天的 1 天或過去 7 天的 4 天

如果已超過 7 天,則應顯示(number of days) overdue 我遇到的問題是我允許我的用戶在 7 天內提交表單。 記住這一點,他們不會逾期,因此直到超過 7 天的時間范圍,因此如果用戶需要 8 天來完成表單,他們應該只逾期一天,但是我的腳本目前顯示逾期 8 天,因為它考慮到之前的 7.

一旦用戶超過 7 天的時間范圍,有沒有一種方法可以顯示減去 7 天?

<?php include 'config.php';
     $data = mysql_query("SELECT *, TIMESTAMPDIFF(DAY, date, CURDATE()) AS expire_date FROM supplier_session ORDER BY expire_date ASC") 
     or die(mysql_error()); 

     echo "<table class=\"table\" style=\"width:995px;  font-family: 'Lucida Grande', Tahoma, Verdana, Arial, sans-serif;
     font-size:11px;\" >

<tr>
    <td style=\"width:100px;\">ID:</td><td>Company Name:</td><td>Company Reg No:</td><td>Application Started:</td><td style=\"width:200px;\">Application Duration:</td><td style=\"width:100px;\">Date:</td><td>Status:</td></tr>";


     while($row = mysql_fetch_array( $data )) { 
        $days = $row['expire_date'];
        $when = $days*0; 
        $str = $row['expire_date'];
        $str2 = substr($str, 0); // "quick brown fox jumps over the lazy dog."
       if ($when <= 31){
       echo "<tr><td style=\"width:100px;\"><p>".$row['id'] . "</p></td>"; 
       echo "<td style=\"width:150px;\"><p>".$row['company_name'] . "</p></td>"; 
       echo "<td style=\"width:150px;\"><p>".$row['company_reg_number'] . "</p></td>";
       echo "<td>"; echo date('d/m/Y',strtotime($row['date'])); echo "</td>";
       
      
       if ($days >= 8) {
            echo "<td style=\"width:200px;\"><p>{$str2} days overdue</td>";
       }
       
        elseif ($when <= 7){
            
        
             echo "<td style=\"width:200px;\"><p>{$str2} of 7 days past</td>";
        }
        
        

          
        }
     

        echo "<tr>";
      }
     
    
      echo "</table>"; //Close the table in HTML
      
     
    ?>

如果你想從今天起 7 天后退,你可以使用這個:

date('Y-m-d', strtotime('-7 days'))
$date = $row['expire_date']; //date from database 
$str2 = date('Y-m-d', strtotime('-7 days', strtotime($date))); 

您可以使用strtotime()但更好的選擇是使用DateTime類。 它更易於使用並提供更多功能。

減去 7 天的緊湊方法:

$date = '2020-02-03';
echo date_create($date)
    ->modify('-7 days')
    ->format('Y-m-d');

這被壓縮為鏈式方法,但您可以自行創建類的實例並對對象執行操作。

$dateObject = new \DateTime($date);
$dateObject->modify ('-7 days');

在 SQL 中也可以這樣做,因此如果您沒有理由在 PHP 中執行此操作,則應該在 MySQL 中執行此操作。

給出的答案只是計算年、月和日,而不是計算小時、分鍾等。

因此,如果您昨晚在 23:59 更新了數據庫,那么它將在 2 分鍾后的 00:01 顯示過去 1 天。

這個問題的正確答案應該是這樣的

date('Ymd H:i:s'); 將為我們提供當前日期Now或 expire_date 的年、月、日、小時、分鍾和秒。

$expire_date = '2020-01-23 10:12:13'; //Output of the date we mentioned above 
$a = date('Y-m-d H:i:s', strtotime('-7 days', strtotime($expire_date)));
echo $a; //Correct result of 7 days past, 2020-01-16 10:12:13

已測試,並且工作正常您可以在 php 中減去日期,如下所示。

$test_date = "2020-02-02";
date("Y-m-d", strtotime("-2 days", strtotime($test_date)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM