MYSQL/PHP如何从日期起减去7天?

use*_*968 12 php mysql

我正在使用一个系统,告诉我用户将表单中的数据重新提交到数据库的7天中有多少天.下面的脚本测量从原始开始日期/表单最初填写到完成时间的过去天数.

基本上我试图回应两种不同的措施,如果从开始日期开始的日期小于7,那么它应该回显出"过去7天的'(天数)"

即7个过去的1天或7个过去的4天

如果它已超过7天,那么它应该说"(天数)过期".我得到的问题是,我允许我的用户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


    ?>
Run Code Online (Sandbox Code Playgroud)

小智 40

如果你想从今天起7天后回来,你可以使用这个:

date('Y-m-d', strtotime('-7 days'))
Run Code Online (Sandbox Code Playgroud)


Dis*_*att 5

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

  • 尽管此代码可以回答问题,但提供有关此代码为何和/或如何回答问题的其他上下文,可以提高其长期价值。 (3认同)

Dha*_*man 5

您可以使用strtotime(),但更好的选择是使用DateTime类。它更易于使用并提供更多功能。

减去 7 天的紧凑方法:

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

这被压缩为链式方法,但您可以自行创建类的实例并对对象执行操作。

$dateObject = new \DateTime($date);
$dateObject->modify ('-7 days');
Run Code Online (Sandbox Code Playgroud)

同样可以在 SQL 中完成,因此如果您没有理由在 PHP 中执行此操作,则应该在 MySQL 中执行。