1

我正在尝试生成一个链接列表,从当月开始每个月一个链接,并向后工作 X 个月。

我有一些主要工作,除了它“跳过” 2013 年 2 月的月份。这是我现在所拥有的屏幕截图:

在此处输入图像描述

以下是生成该列表的视图模板中的代码:

        <?php for( $i = 1; $i <= 8; $i++ ): ?>
            <li>
                <?php $prior_time = strtotime( "-$i month" ); ?>
                <?php $month = date( 'm', $prior_time ); ?>
                <?php $year = date( 'Y', $prior_time ); ?>
                <?php $day = date( 't', mktime( 0, 0, 0, $month, 1, $year ) ); ?>
                <?php $prior_month_string = date( 'F', $prior_time ); ?>
                <?php $prior_month_from = date( 'm/01/Y', $prior_time ); ?>
                <?php $prior_month_to = date( "m/$day/Y", $prior_time ); ?>
                <?php if( date( 'F', strtotime( $selected_from ) ) == $prior_month_string ): ?>
                    <?php echo $prior_month_string; ?>
                <?php else: ?>
                    <a href='/claims?<?php echo "from=$prior_month_from&to=$prior_month_to"; ?>'
                       data-from='<?php echo $prior_month_from; ?>'
                       data-to='<?php echo $prior_month_to; ?>'>
                        <?php echo $prior_month_string; ?>
                    </a>
                <?php endif; ?>
            </li>
        <?php endfor; ?>

有趣的是,如果我将for循环扩展到向上运行$i <= 18,它显示 2012 年 2 月。但由于某种原因,当尝试显示 2013 年 2 月时,它会显示另一个 2013 年 3 月(上面屏幕截图中显示的问题示例)。

问题似乎在这里:

$prior_time = strtotime( "-$i month" );

但是,我不知道为什么以及如何解决它。为什么这个算法会吐出第二个 2013 年 3 月而不是 2013 年 2 月,我该如何解决这个奇怪的问题?

4

1 回答 1

5

今天是29号,没有2013年2月29日;相当于 2013 年 3 月 1 日。

为了解决这个问题,我会根据当月 1 日生成您的日期(而不是根据今天的日期计算)。

于 2013-05-29T21:58:02.950 回答