[英]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.