[英]DateTime returning Total days instead of Remaining days in PHP
我有一個存儲保修日期的 MySQL 數據庫。 值是 Start_Date 和 End_Date,我正在嘗試計算剩余的保修天數。
例子:
嘗試 #1 - 日期時間
#date_1 = 2018-12-01 (From MySQL) - Start / PAST
#date_2 = 2019-01-11 (From MySQL) - End / FUTURE
$d1 = new DateTime($date_1);
$d2 = new DateTime($date_2);
$int = date_diff($d1, $d2);
$r = $int->format('In %a days');
41天內產出
嘗試 #2 - Date_Create
#date_1 = 2018-12-01 (From MySQL) - Start / PAST
#date_2 = 2019-01-11 (From MySQL) - End / FUTURE
$d1 = date_create($date_1);
$d2 = date_create($date_2);
$int = date_diff($d1, $d2);
return $int->format('%a');
輸出 41
嘗試 #3 - SQL DATEDIFF
$data = $pdo->query("
SELECT *, DATEDIFF(start_date, end_date)
AS date_difference
FROM `warranty`
ORDER BY id
DESC
")->fetchAll();
輸出 -41
我究竟做錯了什么? 我只想計算發票保修的剩余天數。
檢查 DATEDIFF 文檔:
date1, date2 Required. Two dates to calculate the number of days between. (date1 - date2)
你需要:
DATEDIFF(end_date, start_date)
如果我理解正確,您需要使用今天作為開始,而不是過去的一天,例如
$d1 = new DateTime();
$d2 = new DateTime($date_2);
$int = date_diff($d1, $d2);
$r = $int->format('In %a days');
這將為您提供從今天到保修期結束的剩余天數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.