我将显示未来 3 个月的月份标题,以及每个月份的第一天和最后一天。
for($i = 1; $i < 4; $i++) { // For each month for 3 months
$monthTitle = date('F Y', strtotime('+'.$i.' month'));
$begin_date = date('Y-m-01', strtotime('+'.$i.' month')); // First day of calendar month in future.
$end_date = date('Y-m-t', strtotime('+'.$i.' month')); // Last day of calendar months in future.
};
Run Code Online (Sandbox Code Playgroud)
2015 年 11 月 29 日的输出为:
December 2015
2015-12-01
2015-12-31
January 2016
2016-01-01
2016-01-31
February 2016
2016-02-01
2016-02-29
Run Code Online (Sandbox Code Playgroud)
直到昨天,即 2015 年 11 月 29 日,这一切都很好,但今天 2015 年 11 月 30 日它跳过了二月。
2015 年 11 月 30 日的输出为:
December 2015
2015-12-01
2015-12-31
January 2016
2016-01-01
2016-01-31
March 2016
2016-03-01
2016-03-31
Run Code Online (Sandbox Code Playgroud)
我猜是一个错误,但有人知道解决方法吗?
感谢@devlin carnate 为我指明了正确的方向。
for($i = 1; $i < 4; $i++) { # for each month
$tmp = date('Y-m-15'); // Get the middle of the month to avoid PHP date bug.
$begin_date = date('Y-m-01', strtotime($tmp . '+'.$i.' month')); // First day of calendar month in future.
$end_date = date('Y-m-t', strtotime($begin_date)); // Last day of calendar months in future.
$monthTitle = date('F Y', strtotime($begin_date));
};
Run Code Online (Sandbox Code Playgroud)
这似乎工作得很好。