我正在尝试获取本月之前的月份数(现在是04
(4月),所以我正试图获得03
)。我正在尝试这个:
date('m')-1;
但我得到3
。但我想要的是获得03
。
答案 0 :(得分:39)
这样做的正确方法是:
date('m', strtotime('-1 month'));
正如您将看到1月份发生的奇怪事情以及其他答案。
答案 1 :(得分:3)
当月份(当天)的日期大于上个月的最后一天时,当前接受的回复将导致错误的答案。
e.g。 3月29日(非闰年)执行date('m', strtotime('-1 month'));
的结果将是03,因为29比2月的任何一天都大,因此strtotime('-1 month')
实际上将返回3月1日。
相反,请使用以下内容:
date('n') - 1;
答案 2 :(得分:1)
您可能会感到惊讶,但date() function manual page有您需要的确切示例:
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
答案 3 :(得分:0)
计算结果是一个数字。如果要将其格式化为字符串,可以使用:
$result = date('m')-1;
$string_result = sprintf("%02s", $result);
修改:请注意,这只是格式化字符串数字的部分解决方案。
答案 4 :(得分:0)
intval(date('m'))
当月?
(intval(date('m'))-1)%12
上个月,也是12月/ 1月
答案 5 :(得分:0)
date('m', strtotime('last month'));
无论您是否在一月份,这都将起作用
答案 6 :(得分:-1)
这也有效。
printf("%02s", (date('m') - 1));
答案 7 :(得分:-2)
这应该为你做...
str_pad(date('m')-1, 2, '0', STR_PAD_LEFT);