PHP - 从当月获取上个月

时间:2015-08-01 07:12:40

标签: php date datetime

我需要从当前月份开始上个月。尝试下面的代码,它适用于有30天的月份,但在31天的特定月份不起作用。 March, May, July, October and December

注意:问题可能会重复,但请完整阅读直至结束。您可以通过更改系统并测试下面的代码来检查相同的问题。我需要格式为Jul

的上个月输出

对于日期:30-Jul输出

Previous Month-Jun Current Month-Jul

对于日期:31-Jul输出

Previous Month-Jul Current Month-Jul

$prev_month = date('M', strtotime("last month")); echo 'Previous Month--'.$prev_month; echo 'Current Month--'.date('M');

还尝试echo date('M', strtotime("-1 Months"));但输出与上面相同。

如果当前月份为(August)31天,那么前一个月为(July)31天,那么它会正常工作并显示正确的上个月即July ,但如果当前月份有31天且上个月有30天或更短的天数,则无效。

我应该如何在当前月份的基础上获取正确的上个月?

2 个答案:

答案 0 :(得分:1)

你只需尝试

echo "Previous Month".date('M',strtotime('first day of last month'));

并且对于特定日期,您只需使用

即可
echo date('M',strtotime('first day of last month',strtotime('30-Jun')));//May

答案 1 :(得分:0)

您应该从月初开始传递日期。

$startDate = date('Y-m-1');
$prevMonth = date('M', strtotime("last month", strtotime($startDate)));

PHP date() and strtotime() return wrong months on 31st