从列表每小时特别的事情

时间:2011-11-01 18:05:02

标签: php

我有一个数组中的日期列表(以unix整数格式)。

我按升序对这些数字进行了排序。完成。

现在,我使用foreach命令循环遍历每个元素。

每次小时数据发生变化时,我都会尝试添加echo '<p>'; ...所以我试图获取一个日期列表,排序,并且每小时都有一个<p>所以他们是每小时一次......

怎么做?

5 个答案:

答案 0 :(得分:1)

这是你在找什么?

//list of unix timestamps 
$timeStamps = array();
//false data for testing
for($i=1;$i<=30;$i++){
    $timeStamps[] = strtotime("+".($i*10)." minutes");
}

//remember the last value.
$new = '';
$last = '';
//loop through the timestamps
foreach($timeStamps as $ts){
    //generate a hour string for this ts
    $new = date('d-M-Y H', $ts);
    //if this hour string is not the same as the last hour string echo p tag
    if($new != $last){
        echo '<p>';
    }
    //set $last to the new hour string for next loop.
    $new = $last;

    //echo the date
    echo date('d-M-Y H:i', $ts).'<br />';
}

我还在小时字符串中包含了日期,以防止日期更改出现问题。例如,如果时间戳用于1-NOV-2011 1:00am而下一个时间戳用于2-NOV-2011 1:00am,则仅检查小时将不会回显&lt; p&gt;。包括日期。

答案 1 :(得分:0)

将您的UNIX时间发送到php函数date()。它会传回一个字符串,当小时改变时你应该注意到它。

http://us.php.net/manual/en/function.date.php

答案 2 :(得分:0)

没有经过测试,但不在我的头顶:

$currentHour = -1;
foreach ($dates as $date)
{
    $dateHour = intval(date('G'), $date);
    if ($currentHour != $dateHour)
    {
        echo '<p>';
    }
    if ($dateHour == $currentHour + 1)
    {
        echo '</p>';
    }
    $currentHour = $dateHour;
}

答案 3 :(得分:0)

不确定为什么要使用Unix日期,但......

答案应该在于简单的数学。一小时是中位数。 Unix时间戳从1970年1月1日0000时开始。

因为Unix时间戳是秒,你可以通过将时间戳除以3600来找到一小时。如果它可以被整除,那么你的中位数是一小时。

您需要使用modulus

echo "<p>";
foreach ($unixtimes as $my_timestamp)
{
    if ($my_timestamp % 3600 == 0) echo "</p><p>"; // If there's no remainder, it's an hour.
    echo $my_timestamp;
    echo "<br />";
}

语法可能不正确,但这个想法很合理。还可以节省您进行日期转换的时间。祝你好运。

编辑:为你写完整篇文章。

答案 4 :(得分:0)

这样的事情应该有效!祝你好运:)

foreach ( $timestamps as $timestamp )
{
    // Get the number of hours this timestamp represents starting Jan 1, 1970 (3600 are seconds in an hour)
    $currentHour = floor( $timestamp / 3600 );
    if ( $currentHour != $previousHour )
    {
        echo '<p>';

    // Add your logic here..

        $previousHour = $currentHour;
    }
}