如果想通过PHP来取得当前月的前后几月,并不需要进行复杂的处理,只需要使用PHP的strtotime函数就可以.
函数说明:
int strtotime ( string time [, int now] )
time 被解析的字符串,格式根据 GNU Date Input Formats 语法
now 用来计算返回值的时间戳
例:生成当前月的前后三月
for ($i = -3;$i<=3;$i++){
$month_list[]= strtotime("$i month");
}这时,前三月和后三月的UNIX时间戳形式就存储在了$month_list数组里
想将其表现出来可以这样处理
//定义月份对应的中文表现形式
$monthArray = array(1=>"一月",2=>"二月",3=>"三月",4=>"四月",5=>"五月",6=>"六月",7=>"七月",8=>"八月",9=>"九月",10=>"十月",11=>"十一月",12=>"十二月");
//输出$month_list中的值
foreach ($month_list as $v){
echo $monthArray[date("n",$v)];
}上面处理过程可以根据需要修改,因为$month_list中存储的是时间戳,可以输出任意形式的日期表现形式,具体方法,可以查看date函数的使用方法.
此处理方法是在1月29日编写的,到了1月30号时,程序算出来的月份出现了2个3月,但没有2月,原因是因为PHP在处理时,1月加一月(也就是31天),到了3月份,所以使用+1 month并不可行,以下是改进方法:
for ($i = -3;$i<=3;$i++){
$tm = date("n") + $i;
$ty = date("Y");
if ($tm <=0){
$tm += 12;
$ty -= 1;
}
$nowdate = $ty . "-" . str_pad($tm,2,0,STR_PAD_LEFT) . '-1';
$month_list[]= strtotime($nowdate);
}