PHP时间表日问题

时间:2013-01-31 20:04:43

标签: php

我只包含了一些我的时间表脚本(处理日子的部分)

我注意到我的时间表工作正常,直到月底(每天都成为星期四),所以我回到剧本,我相信我的时间表不知道何时检测是否是新的一个月所以它继续表现得像一个计数器31,32,33(月份的日子),这是不存在的,这就是为什么它每天给我作为星期四,并说这一年是1970年。

时间表显示从今天开始的5天 - 所以它今天会显示,其他4个例如星期五,星期六,星期日和星期一。

我的代码如下:

       <?php
    }
    $timein = time();
    $d7 = date("H", $timein);
    $d6 = ($d7 +1) - 4;
    $d1 = date("d", $timein);

    $d2 = date("F", $timein);   
    $d3 = date("Y", $timein);
    $d4 = "$d2 $d3";
    $d5 = $d1 + 4;
    for( $i = $d1; $i <= $d5; $i++ ) {
    $day = strtotime( "{$i} {$d4}" );
    $day = date( "d/m/Y", $day );

    ?>
    <table border="0" cellspacing="0" cellpadding="0" width="20%" style="float: left;">
    <tr><td>
        <div class="square title" style="padding: 3px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; width: 92%; text-align: center; bottom: 5px; margin-bottom: 5px; cursor: pointer; background: #79CDCD;">

            <strong><?php echo $day; ?></strong>

        </div>
</td></tr>
</table>
<? } ?>

是否有解决方案或更简单的方法来执行此类脚本?

提前感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

你只需要在$timein加上86400秒来增加你的一天吗?

答案 1 :(得分:1)

您的代码似乎很难遵循。这通常不是一个好兆头。在处理日期时,我通常更喜欢面向对象的方法:

$date = new DateTime();

for ($i = 0; $i <= 4; $i++) {
    ?>
    <table border="0" cellspacing="0" cellpadding="0" width="20%" style="float: left;">
    <tr><td>
        <div class="square title" style="padding: 3px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; width: 92%; text-align: center; bottom: 5px; margin-bottom: 5px; cursor: pointer; background: #79CDCD;">

            <strong><?php echo $date->format('d/m/Y'); ?></strong>

        </div>
    </td></tr>
    </table>
    <?php
    $date->add(new DateInterval('P10D'));
}

答案 2 :(得分:0)

您可以使用strtotime获取今天午夜的价值,并在for循环中添加$i

<?php

    for( $i = 0; $i < 5; $i++ ) {
        $day = strtotime( "today + $i days" );
        $day = date( "d/m/Y", $day );

        ?>
        <table border="0" cellspacing="0" cellpadding="0" width="20%" style="float: left;">
            <tr>
                <td>
                    <div class="square title" style="padding: 3px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; width: 92%; text-align: center; bottom: 5px; margin-bottom: 5px; cursor: pointer; background: #79CDCD;">
                        <strong><?php echo $day; ?></strong>
                    </div>
                </td>
            </tr>
        </table>
<? } ?>

答案 3 :(得分:0)

正如njk建议你也可以加86400秒的倍数。

<?php

for( $i = 0; $i < 5; $i++ ) {
    $day = time() + ($i * 86400);
    $day = date( "d/m/Y", $day );

    ?>
    <table border="0" cellspacing="0" cellpadding="0" width="20%" style="float: left;">
        <tr>
            <td>
                <div class="square title" style="padding: 3px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; width: 92%; text-align: center; bottom: 5px; margin-bottom: 5px; cursor: pointer; background: #79CDCD;">
                    <strong><?php echo $day; ?></strong>
                </div>
            </td>
        </tr>
    </table>
<? } ?>