我正在使用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
。
但我的代码返回异常结果
答案 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
将为负数,经过的天数,否则为正数