Laravel碳获取时间直到到期

问题描述 投票:0回答:2

我有一种产品会在设定的天数后过期。我正在尝试向用户显示他们还剩下多少天,直到过期。我似乎无法显示所有零件的正确剩余天数,但输出不正确。我希望它不会受到我所遇到的碳的限制...

这是我的完整代码;

$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天以上

laravel laravel-5 php-carbon
2个回答
0
投票

您的问题不清楚$order是Carbon对象还是Model对象。据我了解,$order看起来像模型对象,您必须先将$order->created_at转换为Carbon对象。

$create_date = Carbon::parse($order->created_at);

然后您可以使用$create_date进行时间计算。而且,您随时可以修补一下数据。


0
投票

我这里有一个示例代码,基本上,它复制了您想要的内容。碳正常工作。首先让我们看一下

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

© www.soinside.com 2019 - 2024. All rights reserved.