strtotime 获取上一个月
1.案例
strtotime结合-1 month, +1 month, next month 有时候会出现错误
// 比如当前时间:2018-07-31
date("Y-m-d",strtotime("-1 month"))
// 输出:2018-07-01
-1 month 程序设定-30天,相当于7月31日-30天得7月30号
var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31"))));
//输出2017-03-03
var_dump(date("Y-m-d", strtotime("+1 month", strtotime("2017-08-31"))));
//输出2017-10-01
var_dump(date("Y-m-d", strtotime("next month", strtotime("2017-01-31"))));
//输出2017-03-03
var_dump(date("Y-m-d", strtotime("last month", strtotime("2017-03-31"))));
//输出2017-03-03
2.解决
PHP5.3开始, date 新增了一系列修正短语, 来明确这个问题
那就是 first day of 和 last day of,也就是你可以限定好不要让 date 自动规范化
var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));
//输出2017-02-28
var_dump(date("Y-m-d", strtotime("first day of +1 month", strtotime("2017-08-31"))));
////输出2017-09-01
var_dump(date("Y-m-d", strtotime("first day of next month", strtotime("2017-01-31"))));
////输出2017-02-01
var_dump(date("Y-m-d", strtotime("last day of last month", strtotime("2017-03-31"))));
////输出2017-02-28