我有一种产品会在设定的天数后过期。我正在尝试向用户显示他们还剩下多少天,直到过期。我似乎无法显示所有零件的正确剩余天数,但输出不正确。我希望它不会受到我所遇到的碳的限制...
这是我的完整代码;
$order->created_at->addDays($order->service->duration)->subDays($order->created_at->addDays($order->service->duration)->diffInDays(Carbon\Carbon::now()))->diffForHumans()
Break down;
计算结束/有效日期-
{{ $order->created_at->addDays($order->service->duration) }}
计算出到目前为止使用了多少天-
{{ $order->created_at->addDays($order->service->duration)->diffInDays(Carbon\Carbon::now()) }}
因此,应该是结束/到期日期减去已经使用的天数,例如5天后到期,并且已经3天5-3 = 2天(再次完整查询)
$order->created_at->addDays($order->service->duration)->subDays($order->created_at->addDays($order->service->duration)->diffInDays(Carbon\Carbon::now()))->diffForHumans()
返回的值是从现在开始的23小时,应该是200天以上
您的问题不清楚$order
是Carbon对象还是Model对象。据我了解,$order
看起来像模型对象,您必须先将$order->created_at
转换为Carbon对象。
$create_date = Carbon::parse($order->created_at);
然后您可以使用$create_date
进行时间计算。而且,您随时可以修补一下数据。
我这里有一个示例代码,基本上,它复制了您想要的内容。碳正常工作。首先让我们看一下
$orderCreatedAt = new Carbon('first day of January 2020', 'UTC');
$orderServiceDuration = 200;
$expireDate = $orderCreatedAt->addDays($orderServiceDuration);
return $expireDate->diffForHumans(); // 3 months from now
所以,您的代码可以像这样完成
$order->created_at->addDays($order->service->duration)->diffForHumans();
此外,如果未指定,diffForHumans
的参数默认为now()
。