Увеличьте индикатор прогресса за счет увеличения времени - PullRequest
0 голосов
/ 09 сентября 2018

каждый, у меня есть этот проект, который я создаю для клиента, которому нужен своего рода индикатор индикатора выполнения, показывающий, когда истекает срок действия плана подписки, например, пользователь, зарегистрированный на X количество дней и Предполагается, что план завершится в течение следующих 7 дней (после чего будет завершена пробная версия для пользователя).

вот та логика, которую я использую, но она, похоже, не работает, лучше любой идеал или способ обойти это.

Дата регистрации пользователя возвращается 2018-09-11 16: 32: 08.000000 - (LARAVEL CARBON) сохранена в БД

и затем я добавляю 7 дней, используя код ниже Carbon :: createFromFormat ('Y-m-d H: i: s', 2018-09-11 16: 32: 08.000000;

Окончание срока действия пользовательского журнала 2018-09-18 16: 32: 08.000000 - Не сохранено в БД.

На мой взгляд, у меня есть этот div, содержащий индикатор прогресса начальной загрузки.

<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
<span class="sr-only">20%Complete (danger)</span>
</div>

Опять же, вопрос в том, как я могу просмотреть или переключить регистр между каждым проходящим днем, чтобы хотя бы указать прогресс, скажем, например, если дата старше на день, добавить переменную, возвращающую 20% - что я могу место в прогрессе div

1 Ответ

0 голосов
/ 09 сентября 2018

Я не использую 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();

Это просто простая арифметика.

Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...