在PHP中获得前几个月

时间:2015-02-27 07:30:44

标签: php date select

我需要在php上显示上个月的3个月

这是我到目前为止所尝试的内容

<select style='width: 112px;' name='PayMonth'>
<option name="PayMonth" value=''>Select Month</option>   
<?php
for($i = 1 ; $i <= 12; $i++)
{
$allmonth = date("F",mktime(0,0,0,$i,1,date("Y")))
?>
<option value="<?php echo $i; ?>" ><?php echo date("F",mktime(0,0,0,$i,1,date("Y")));?>
</option>
<?php
}?>

这将显示所有月份

但是如何在当月的3个月内展示

即,

如果当前月份是4月,则应显示2月,3月,4月

如果当前月份为1月,则应显示nov,dec,jan

我试过..

<?php

$month = date("m");

?>

但在循环中我感到困惑

for($i = 1 ; $i <= $month; $i++)

6 个答案:

答案 0 :(得分:1)

像蛋糕一样容易:

echo date('Y-m-d', strtotime("first day of -1 month"));

您可以用您选择的号码替换-1:

<?php
foreach(range(-1,-3,-1) as $value) {
    echo date('Y-m-d', strtotime(sprintf("first day of %d month", $value)));
}

答案 1 :(得分:1)

如果你得到$month = date("m");那么你的forloop应该是

for($i = $month-3 ; $i <= $month; $i++)

旁注:

正在使用

<option value="<?php echo $i; ?>" ><?php echo date("F",mktime(0,0,0,$i,1,date("Y")));?>

你可以在值内获得-1,-2。所以你应该改变

<option value="<?php echo date("m",mktime(0,0,0,$i,1,date("Y"))); ?>" ><?php echo date("F",mktime(0,0,0,$i,1,date("Y")));?>

获得

<select style='width: 112px;' name='PayMonth'>
  <option name="PayMonth" value=''>Select Month</option>   
  <option value="11" >November  </option>
  <option value="12" >December  </option>
  <option value="01" >January  </option>
  <option value="02" >February  </option>   
</select> 

答案 2 :(得分:0)

只是做:

date('m', strtotime('-1 month'));

上个月。

你可以把-2或-3放到2个月前或3个月前。

用您选择的格式替换'm'。

答案 3 :(得分:0)

试试这个..

echo date('M', strtotime('0 month'));
echo date('M', strtotime('-1 month'));
echo date('M', strtotime('-2 month'));
echo date('M', strtotime('-3 month'));

答案 4 :(得分:0)

考虑到当月使用月份时会出现错误的结果 - 每个月的第31天。

请改为尝试:

<?
$monthsBack = 3;
// we need to do set day to middle of the month,
// otherwise "-x month" will return wrong results on the 31st of each month:
$now =  mktime(0, 0, 0, date("m"), 15, date("Y"));

for ($i1=0; $i1<$monthsBack; $i1++) {
    $displayDate = strtotime("-{$monthsBack} month", $now);
    echo '<option value="'.date("m", $displayDate).'" >'.date("F", $displayDate).'</option>';
}
?>

答案 5 :(得分:0)

// Today is 2015-02-30
echo date('Y-m-d', strtotime('last month'));