Увеличить индикатор выполнения за счет увеличения времени

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

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

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

а затем я добавляю к нему 7 дней, используя приведенный ниже код Углерод :: 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

просто делайте проценты секунд, я не знаю математики в голове, но Carbon - это просто оболочка DateTime, вы можете сделать Carbon->getTimestamp()

ArtisticPhoenix 09.09.2018 07:15

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

Neon Emmanuel 09.09.2018 07:19

о, я знаю, что такое математика, я не знаю, хотите ли вы, чтобы время осталось, или время прошло ... lol

ArtisticPhoenix 09.09.2018 07:31

Мне просто нужно время, так что я могу поработать с ним

Neon Emmanuel 09.09.2018 07:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
297
1

Ответы 1

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

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

Ваше здоровье!

Привет @ArtisticPhoenix, я попытался интерпретировать то, что вы написали выше, и это был результат - без округления - 1.0005319508142, при округлении до 1,

Neon Emmanuel 09.09.2018 07:33

Modify работает и с Carbon, это просто расширение DateTime, также известное как для людей, которые не могут вспомнить, что +7 Days добавляет 7 дней с addDays. Я посмотрел его исходный код :). Но ничего страшного.

ArtisticPhoenix 09.09.2018 07:35

Я не буду повторять trail ended', потому что вы меняете тип данных с int на строку. Я бы просто повторил 100, также, если вы используете backtic `, сделайте его встроенным блоком кода в комментариях.

ArtisticPhoenix 09.09.2018 07:37

Другие вопросы по теме