获取前12个月中指定月份的年份?

时间:2013-05-05 03:39:41

标签: php date strtotime

我正在尝试:

$m = 'December';
$from = date('jS M Y', strtotime("first day of previous $m"));

但它没有回复约会。在使用中,用户将从下拉框中选择月份。但是,我尝试直接输入'December'来代替变量,但它仍然不起作用。

我期待它回归“2012年12月1日”。

2 个答案:

答案 0 :(得分:1)

试试这个

$m = '12'; // set here numeric form of month
echo $from = date('jS M Y', strtotime("01-".$m."-".(date("Y") -1)));

$m = 'December';
echo $from = date('jS M Y', strtotime("01-".$m."-".(date("Y") -1)));

输出

1st Dec 2012 

Codepad

Codepad2

修改

试试这个,这是在1月和12月进行测试

$m = '01';
$new_m = date('m'); // get current month
if($m > $new_m) {
   $year = date("Y") -1;
} else {
   $year = date("Y");
}
echo $from = date('jS M Y', strtotime("01-".$m."-".$year));

输出

1st Jan 2013 

Codepad

答案 1 :(得分:1)

鉴于您的代码$m是文本格式的当前月份,您可以使用以下内容:

$m = 'June';
$m = date('m', strtotime($m));
$c = (mktime(0,0,0,$m, 1) < time()) ? mktime(0,0,0,$m,1) : mktime(0,0,0,$m,1, date("Y") -1);
$from = date('jS M Y', $c);

这样做是将月份转换为数值并存储代替字符串值。然后它将$c分配给当前年份或上一年的月份,具体取决于当前年份的月份是否小于当前时间戳。因此,如果当前时间戳为June 1st at 1am,则仍会选择当前年份。

DEMO