因为有大小月,所以涉及月份最后一天计算的时候直接date('Y-m-d', strtotime('+1 month'));得出的结果很有可能是下下个月的。例如:
$date = date('Y-m-d', strtotime(date('2018-01-31') . ' +1 month'));
echo ($date);
echo "<br/>";
$date2 = date('Y-m-d', strtotime(date('2018-05-31') . ' +1 month'));
echo ($date2);
虽然我们想得到的值是2018-02-28,和2018-06-31,
但是实际上得到的却是2018-03-03和2018-07-01,
并不符合要求。
所以下面提供了一些解决相关问题的方法。
1.获取上个月的第一天及最后一天.
//上个月第一天:计算出本月第一天再减一个月
echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 month'));
//上个月最后一天:计算出本月第一天再减一天
echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 day'));
2.获取当月第一天及最后一天.
//计算当月的第一天:
$Firstday=date('Y-m-01', strtotime(date("Y-m-d")));
echo $Firstday;
//计算当月的最后一天:计算出当月第一天加上一个月再减去一天
echo date('Y-m-d', strtotime("$Firstday +1 month -1 day"));
3.获取下个月的最后一天
//计算当月的第一天:
$Firstday=date('Y-m-01', strtotime(date("Y-m-d")));
echo $Firstday;
//计算当月的最后一天:计算出当月第一天加上两个月再减去一天
echo date('Y-m-d', strtotime("$Firstday +2 month -1 day"));
4.使用函数及数组来获取当月第一天及最后一天
function getthemonth($date)
{
$firstday = date('Y-m-01', strtotime($date));
$lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
return array($firstday,$lastday);
}
$today = date("Y-m-d");
$day=getthemonth($today);
echo "当月的第一天: ".$day[0]." 当月的最后一天: ".$day[1];
5.获取当天年份、月份、日及天数.
echo " 本月共有: ".date("t")."天";
echo " 当前年份:".date('Y')."年";
echo " 当前月份:".date('m')."月";
echo " 当前几号:".date('d')."日";