2014-03-26 83 views
3

我目前正在尝试弄清楚如何根据持续时间设置DIV的尺寸。我正在使用div来表示日历上的事件。并为我的活动提供从时间到时间戳。我似乎无法弄清楚最佳方法应该是什么。根据持续时间设置分隔宽度和填充

让我举一个我想要做的例子。

 <td style="position:relative;"> 
      <!-- Inspecting every event --> 
       <?php foreach ($room['events'] as $event): ?> 

        <!-- generate event divs --> 
        <?php if(date('j', strtotime($event['e_from'])) == $x+1): ?> 
         <div class="event" 
           style=" 
            width: 100px; 
            margin-left: 30px; 
         "> 
          <!-- pupulate divs with content --> 
          blah blah blah 

         </div> 
        <?php endif; ?> 

       <?php endforeach; ?> 

      </td> 

此代码有效。现在我需要根据持续时间来替换宽度和填充。我可以使用$event['e_from']$event['e_to']访问时间戳。字符串看起来像这样2014-03-05 06:28:00

我想做什么来设置基于事件中的时间的填充。例如,如果从午夜开始,填充为0,如果从1pm开始填充为13px,则基本上每隔1小时填充1px。然后根据每小时e_frome_to之间的时间和1px设置宽度。我不是100%肯定的规模,但逻辑将是相同的无论如何..

我想我不能要求实际的解决方案,因此,我会很感激任何提示或建议如何处理此任务。谢谢大家提前阅读您的回复。

+0

PHP中有函数可以比较时间,所以你不必编写自己的函数(毕竟比较时间不是比较数字)。你可以得到它输出一个小时的整数差,之后它应该是平稳的航行。祝你好运! 编辑:这可能有助于http://stackoverflow.com/a/6158762/706798 – Andrey

+0

,我应该如何使它每小时增加1px?使用for循环? –

+0

我不确定我是否理解这个问题。将填充设置为结果(以小时整数表示的时间差)不起作用? – Andrey

回答

1

你可以这样说:

$maxWidth = 200; // px 
$eventStart = strtotime('2014-03-01 20:54:00'); 
$eventEnd = strtotime('2014-03-01 22:31:59'); 
$eventLength = $eventEnd - $eventStart; 
$maxLength = 86400; 
$ratio = $eventLength/$maxLength; 

$width = round($ratio * $maxWidth); 

您可以从0设置规模为$ maxWidth。在这种情况下,宽度将是13px。