PHP日期减去一个月返回错误的月份
当前日期为2017年3月29日 当我用PHP减去2个月,我得到PHP日期减去一个月返回错误的月份,php,date,Php,Date,当前日期为2017年3月29日 当我用PHP减去2个月,我得到1月份 $prevmonth = date('M', strtotime('-2 months')); echo $prevmonth; 但当我减去1个月时,它给出了三月 $prevmonth = date('M', strtotime('-1 months')); echo $prevmonth; 如评论所述,没有2月29日 2月29日变成3月1日 您最好从中获取当前月号,-1,然后获取文本表示 $prevMonth = dat
1月份
$prevmonth = date('M', strtotime('-2 months'));
echo $prevmonth;
但当我减去1个月时,它给出了三月
$prevmonth = date('M', strtotime('-1 months'));
echo $prevmonth;
如评论所述,没有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) < 1) ? 12 : date('n') - 1;
$prevMonth=((日期('n')-1)<1)?12:日期('n')-1;
strotime()
使用30天的月份,2月份(今年)只有28天,因此无法在2月份生成有效日期。您可以使用当前日期d
或j
,减去上个月的日期(-29天
):
这也将从
1月获得12月
。因为没有第29天Februrary@JohnConde:至少今年没有。
$prevMonth = ((date('n') - 1) < 1) ? 12 : date('n') - 1;
$prevmonth = date('M', strtotime('-' . date('d') . ' days'));