使用碳获得两个日期之间的差异

时间:2016-06-07 06:30:54

标签: php laravel-5 laravel-4 php-carbon

我正在使用laravel和carbon包。我有两个约会。现在我想从我给定的日期获得日期差异。

$start_Date='2016-06-02 18:00:13';
$end_Date='2016-06-06 18:00:13';
$start = Carbon::parse($start_Date);
$end = Carbon::parse($end_Date);
$now = Carbon::now();
$length = $start->diffInDays($now);
$lengthFromEnd = $end->diffInDays($now);

如果now() == 2016-06-07

$ length 将为5 days

$ lengthFromEnd 将为-1 days

但我的代码返回异常结果

4 个答案:

答案 0 :(得分:1)

你也可以这样试试。

$difference = $start_date->diff($end_date)->days;

答案 1 :(得分:1)

对于否定结果,您需要一个add参数,如下所示:

$absolute = false;
$end->diffInDays($now, $absoute);

答案 2 :(得分:0)

您的代码是正确的。唯一的问题是你得到意外的结果。

当你说now() == 2016-06-07时,你忘了考虑时间。实际上,now必须是这样的2016-06-07 15:47:47

由于,

$start_Date='2016-06-02 18:00:13';
$end_Date='2016-06-06 18:00:13';

您将获得$length = 4$lengthFromEnd = 0。 当$now变为2016-06-07 18:00:13时,您将获得$length = 5$lengthFromEnd = 1

请注意,由于Carbon会给出正数差异,因此不会得到$lengthFromEnd = -1

答案 3 :(得分:0)

这通常可以正常工作,但是最近我遇到了一些问题,无法找到日期格式与日期之间的差异。  12-02-2020

$endDate = Carbon::createFromFormat('d-m-Y', $data['enddate']);
$left = Carbon::parse(Carbon::now())->floatDiffInDays($endDate, false);

如果日期已过期,则$left将为负数,经过的天数,否则为正数