当前日期是2017年3月29日
当我使用PHP减去2个月时,我得到January
$prevmonth = date('M', strtotime('-2 months'));
echo $prevmonth;
但是当我减去1个月时,它会给出March
$prevmonth = date('M', strtotime('-1 months'));
echo $prevmonth;
答案 0 :(得分:1)
strtotime()
使用30天的月份,2月(今年)只有28天,因此2月份不会生成有效日期。您可以使用当前日期d
或j
,并减去上个月(-29 days
)总是会显示的日期:
$prevmonth = date('M', strtotime('-' . date('d') . ' days'));
这也将从December
获得January
。
答案 1 :(得分:0)
如评论中所述,2月29日没有。
2月29日成为3月1日。
您可能最好从中获取当前月份数,-1,然后获取文本表示。
$prevMonth = date('n') - 1;
$prevMonthText = date('M', mktime(0, 0, 0, $prevMonth, 10));
或者,如果您的PHP版本允许(它应该),您可以使用DateTime
。
$prevMonth = date('n') - 1;
$dateObj = DateTime::createFromFormat('!m', $prevMonth);
$monthName = $dateObj->format('M'); // March
你可能已经发现的唯一问题是1月永远不会回到12月。一个快速的三元声明将抓住这一点。
$prevMonth = ((date('n') - 1) < 1) ? 12 : date('n') - 1;