为什么PHP在两个日期之间返回错误的天数?

时间:2016-02-08 10:54:11

标签: php date

在Stackoverflow上有很多这样的问题,在你把它标记为重复之前,让我告诉你,在我的情况下,这些都不起作用。

Date Difference in php on days?

Calculate the difference between date/times in PHP

Dates difference with php

Finding the number of days between two dates

How to calculate the difference between two dates using PHP?

以上是我检查过的问题。最后一个问题有Jurka的答案,遗憾的是,这个答案也不起作用。所以这是我的代码:

$date1 = new DateTime(date('d-m-y'));
$date2 = new DateTime($etaDate);
$interval = $date1->diff($date2);
echo "difference " . $interval->days . " days ";

上述案例中的$etaDate是03-02-16,当前日期是08-02-16所以它应该返回5天,但它返回一个非常高的数字 - 1826天。我尝试了不同的方法,也返回了同一天的数字。

日期值作为字符串存储在数据库中,以便在检索时我再次使用以下代码将其恢复为日期格式:

$newdate = DateTime::createFromFormat('d-m-y', $EntryDate);
$newdate->add(new DateInterval('P15D'));
$etaDate = $newdate->format('d-m-y');

$EntryDate是一个保存数据库日期的变量,$etaDate将其转换为日期格式。

2 个答案:

答案 0 :(得分:1)

只需更改年份格式y to Y即可。

请参阅示例:https://eval.in/514811

答案 1 :(得分:0)

试用此代码 // YYYY-MM-DD格式

$etaDate="2016-02-03";
$date1 = new DateTime(date('Y-m-d'));
$date2 = new DateTime($etaDate);
$interval = $date1->diff($date2);
echo "difference " . $interval->days . " days ";