рассчитать ширину div в процентах от продолжительности времени - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь рассчитать ширину деления на основе продолжительности времени в процентах

У меня есть три div, задайте им ширину и залейте фоновый цвет в зависимости от продолжительности времени между двумя датами

lengthdiv1=2018-4-01 22:31:59 - 2018-01-01 00:00:00
lengthdiv2=2018-10-10 22:31:59 - 2018-4-01 22:31:59
lengthdiv3=2018-12-31 23:59:59 - 2018-10-10 22:31:59

 $maxWidth = 100; // total percentage 
$eventStart = strtotime('2018-01-01 00:00:00');
$eventEnd   = strtotime('2018-4-01 22:31:59');
$eventLength = $eventEnd - $eventStart;
$maxLength = 86400;
$ratio = $eventLength / $maxLength; 
$width = round($ratio * $maxWidth);

HTML-код, где я пытался применить ширину div в процентах

 <div class="daylight">
    <div class="daytime standard" style="width: 20%; background: #D1F1AD;border-left: none;">3m 23d h4</div>
    <div class="daytime summer" style="width: 60%; background: #FDE492; text-align: center">3m 23d h4</div>
    <div class="daytime standard1" style=" background: #D1F1AD;width: 20%; ">3m 23d h4</div>
  </div>

1 Ответ

0 голосов
/ 11 мая 2018

Это должно сделать все необходимое.

<?php
    $dur1 = (strtotime("2018-04-01 22:31:59")) - (strtotime("2018-01-01 00:00:00"));
    $dur2 = (strtotime("2018-10-10 22:31:59")) - (strtotime("2018-4-01 22:31:59"));
    $dur3 = (strtotime("2018-12-31 23:59:59")) - (strtotime("2018-10-10 22:31:59"));

    $totDur = $dur1 + $dur2 + $dur3;

    $wid1 = round($dur1 * 100 / $totDur);
    $wid2 = round($dur2 * 100 / $totDur);
    $wid3 = round($dur3 * 100 / $totDur);

    echo $wid1, " ", $wid2, " ", $wid3;

Стратегия здесь такова:

  1. Преобразовать заданную строку в метку времени в секундах (начиная с метка времени эпохи ) используя php's int strtotime ( string $time [, int $now = time() ] ).
  2. Получите разницу в секундах.
  3. Найдите общую разницу.
  4. Преобразуйте each difference / total difference в проценты и округляет до ближайшего целого числа.
...