php - 前几个月的最后一天计算错误

标签 php date

我在计算过去 12 个月的最后一天时遇到问题。

这是我使用的代码:

    for ($i = 0; $i <= 12; $i++) {
        $start[] = date("Y-m-01", strtotime( date( 'Y-m-01' )." -$i months"));
        $end[] = date( 'Y-m-t', strtotime($start[$i]. -1*$i .' month') );

        echo $start[$i] . " - " . $end[$i] . "<br/>";
    }

这会产生:

2015-10-01 – 2015-10-31
2015-09-01 – 2015-08-31
2015-08-01 – 2015-06-30
2015-07-01 – 2015-04-30
2015-06-01 – 2015-02-28
2015-05-01 – 2014-12-31
2015-04-01 – 2014-10-31
2015-03-01 – 2014-08-31
2015-02-01 – 2014-06-30
2015-01-01 – 2014-04-30
2014-12-01 – 2014-02-28
2014-11-01 – 2013-12-31
2014-10-01 – 2013-10-31

请注意,9 月的最后一天不正确(将 8 月 31 日显示为最后一天)。这种情况会持续好几个月。

有什么想法吗?

最佳答案

想要的结果是什么?我假设您只是想显示该月的第一天和最后一天?您的代码遍历 $i。所以每次迭代时,它都会删除 0 个月、1 个月、2、3、4、5 等。

只需完全删除该代码即可。 Y-m-t 就可以了。

for ( $i = 0; $i <= 12; $i++ ) {
    $start[] = date('Y-m-01', strtotime( date( 'Y-m-01' )." -$i months"));
    $end[]   = date('Y-m-t',  strtotime( $start[$i] ) );

    echo $start[$i] . " - " . $end[$i] . "<br/>";
}

结果

2015-10-01 - 2015-10-31
2015-09-01 - 2015-09-30
2015-08-01 - 2015-08-31
2015-07-01 - 2015-07-31
2015-06-01 - 2015-06-30
2015-05-01 - 2015-05-31
2015-04-01 - 2015-04-30
2015-03-01 - 2015-03-31
2015-02-01 - 2015-02-28
2015-01-01 - 2015-01-31
2014-12-01 - 2014-12-31
2014-11-01 - 2014-11-30
2014-10-01 - 2014-10-31

关于php - 前几个月的最后一天计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359311/

相关文章:

php - 注意第11行的: Undefined variable: title in E:\xampp\htdocs\blog4\new-post. php

php - 从英文版获取 "Speaking URL path segment"

php - 易于获取 : Identify all old version numbers of a package?

r - 仅在 R 中将日期/时间转换为日期

ruby-on-rails - Rails - 尝试从日期范围查询...从今天开始的所有内容

php - mysql 加入 where 条件的问题

php - 在不同应用程序的表单之间传递数据

arrays - 在不同长度的数组中查找相同的日期时间

python - 如何将与正则表达式匹配的所有字符串放入 Python 列表中?

java - 如何在 Java Play 中使用 Form 从 JSON 请求中解析 Date 对象