没有给天计算正确的天数

时间:2019-03-01 12:50:15

标签: php mysql date

我想基于两个日期来计算天数,但是天数计数不正确。

我有2个变量

$date=$date[1]; 来自数据库 $now =date('d/m/Y');当前日期

$date变量值为(来自db)05/03/2019

我使用以下脚本对基于两个日期的天数进行计数,但其返回值为120天。

方法1

$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");

方法2

$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
)

为什么这会导致错误的天数输出?

1 个答案:

答案 0 :(得分:2)

如果使用'd / m / Y'格式,则应使用createFromFormat函数将字符串date转换为date对象。例如:

$date1 = new \DateTime();
$date2 = \DateTime::createFromFormat('d/m/Y', '05/03/2019');

$diff = $date2->diff($date1)->format("%a");