【发布时间】:2019-03-01 12:50:15
【问题描述】:
我想根据两个日期计算天数,但给出的天数不正确。
我有 2 个变量
$date=$date[1]; 来自数据库
$now =date('d/m/Y');当前日期
$date变量值是(来自db)05/03/2019
我使用以下脚本根据两个日期计算天数,但返回 120 天。
方法一
$date=$date[1]; `Is coming from Database`
$now =date('d/m/Y');
$date1 = new DateTime($now);
$date2 = new DateTime($date);
$diff = $date2->diff($date1)->format("%a");
方法二
$datetime1 = new DateTime($now);
$datetime2 = new DateTime($date);
$difference = $datetime1->diff($datetime2);
echo 'Difference: '.$difference->y.' years, '
.$difference->m.' months, '
.$difference->d.' days';
print_r($difference);
但它在以下输出中返回错误的日期
Difference: 0 years, 4 months, 120 daysDateInterval Object
(
[y] = 0
[m] = 4
[d] = 0
[h] = 0
[i] = 0
[s] = 0
[invert] = 0
[days] = 120
)
为什么这给出了错误的天数输出?
【问题讨论】:
-
数据库中的日期是存储为字符串还是存储在
Date/timestamp列中? -
您的问题的原因是您没有使用正确的日期格式(有关如何从该格式创建 DateTime 对象,请参阅下面的 Maxim 的回答)。您应该始终将您的日期信息存储在
date或timestamp列中,这使得处理日期更容易。 -
使用正确的日期数据类型为自己省去一个痛苦的世界并存储日期。