Рассчитать процент между датами в php - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу рассчитать процент (от 0 до 100) времени, прошедшего между двумя датами (начало и конец) в соответствии с текущей датой.Например:

$start_date = "01/01/2018";
$end_date = "31/12/2018";
$today = "30/06/2018";

Ожидаемый результат:

Процент: 50

Есть идеи?Спасибо

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Дата («z») дает вам день года.
Ваше «сегодня» возвращает 180.

Если мы предположим, что начало и конец - это начало и конец текущего года, то все вынужно указать дату ("z") для вычисления процента.
Округлите значение до нужного формата и введите процентное значение.

$today ="30/06/2018";
echo round(date("z", strtotime(str_replace("/", "-", $today)))/365*100,0) . "%";
// 49%

https://3v4l.org/EG6lt

Я предполагаю, что 365 днейдостаточно точен как год.
Вы можете использовать 365 + date("L") вместо только 365 в приведенном выше коде, и он добавит один, если это високосный год.Значение:

echo round(date("z", strtotime(str_replace("/", "-", $today)))/(365 + date("L"))*100,0) . "%";
0 голосов
/ 16 ноября 2018

Вам понадобится как минимум три переменные:

$fromDate = strtotime("01/01/2018 ");
$currentDate = time();
$toDate = strtotime("01/01/2019");



//days between From and To
$datediffA = round(($toDate- $fromDate) / (60 * 60 * 24));
//days between From and Current
$datediffB =  round(($currentDate- $fromDate) / (60 * 60 * 24));

echo $datediffA;

echo $datediffB;

Будет выводить:

365

320

Теперь, зная эти цифры, вы можете перейти и найти процентное соотношение одного к другому.

$percentage = ($datediffB*100)/$datediffA;

echo $percentage;

Будет выводить:

87,671232876712%

0 голосов
/ 16 ноября 2018

Вы можете конвертировать все даты в метки времени и делать оттуда математику.strtotime () преобразует даты за вас, но это будет интерпретировать ваши даты с косыми чертами в английском формате (MM / DD / YYYY) вместо (DD / MM / YYYY).Если вы замените косую черту тире, она будет читать ее в формате DD-MM-YYYY.

$date_timestamp = strtotime(str_replace('/', '-', $date));

Тогда это просто вопрос:

$total = $end_date - $start_date;
$part = $todays_date - $start_date;
$percent = $part/$total * 100;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...