我在计算过去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/>";
}
Run Code Online (Sandbox Code Playgroud)
这会产生:
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
Run Code Online (Sandbox Code Playgroud)
请注意,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/>";
}
Run Code Online (Sandbox Code Playgroud)
结果是
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |