Я не использую Laravel, но я бы сказал что-то вроде этого
$Carbon = New Carbon($row['subscribe_date']); //not sure how you do this
//expire 7 days after original date
$Carbon ->modify('+7 days');
$expire = $Carbon->getTimestamp();
$percent = round(($expire / time())*100);
if($percent <= 0) //expired
Возможно, я ошибаюсь в математике, потому что я просто отмахиваюсь от нее.
Возможно, вам придется сделать что-то подобное, в зависимости от того, хотите ли вы «оставшееся время» или «прошедшее время»
$percent = round(100-($expire / time())*100));
if($percent > 100) //expired
Например, возьмите эти две метки времени Unix:
// 2018-9-9 / 2018-9-16 = 99.99 something.
// and maybe you want the something, the 00.01 bit.
1536451200 / 1537056000
Я посмотрел на Carbon, это просто расширение DateTime, так что оно точно с точностью до секунды.
Тогда, конечно, вам нужно вернуть его в формате JSON, я уверен, что есть какой-то крутойLaravel способ сделать это.
Если вы хотите, чтобы дни, то вы можете вычесть два и разделить на количество секунд в дне.
$seconds = time() - $Carbon->getTimestamp();
if($seconds > 0 )
$days = floor($seconds / (60*60*24)); //60 seconds * 60 minutes * 24 hours
else
$days = 0;
И вы всегда можете сделать это дляотметка времени, если вам не нравится time
(new Carbon)->getTimestamp();
Это просто простая арифметика.
Ура!