Php 正在尝试获取当前月份的前一个月的编号
我正在尝试获取当前月份的前一个月数(现在是Php 正在尝试获取当前月份的前一个月的编号,php,date,Php,Date,我正在尝试获取当前月份的前一个月数(现在是04(四月),因此我正在尝试获取03)。我正在尝试这个: date('m')-1; 但是我得到了3。但是我想得到的是你的计算结果是一个数字。如果要将其格式化为字符串,可以使用: $result = date('m')-1; $string_result = sprintf("%02s", $result); 编辑:请注意,这只是将数字格式化为字符串的部分解决方案。这应该可以为您解决问题 str_pad(date('m')-1, 2, '0', ST
04
(四月),因此我正在尝试获取03
)。我正在尝试这个:
date('m')-1;
但是我得到了
3
。但是我想得到的是你的计算结果是一个数字。如果要将其格式化为字符串,可以使用:
$result = date('m')-1;
$string_result = sprintf("%02s", $result);
编辑:请注意,这只是将数字格式化为字符串的部分解决方案。这应该可以为您解决问题
str_pad(date('m')-1, 2, '0', STR_PAD_LEFT);
您可能会感到惊讶,但有一个确切的例子说明您需要什么:
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
正确的方法是:
日期('m',标准时间('-1个月')代码>
正如你将在一月份看到的,奇怪的事情发生在其他答案上。这同样有效
printf("%02s", (date('m') - 1));
当前接受的响应将导致一个不正确的答案,只要该月的某一天(对于当天)的数字大于上个月的该月的最后一天
e、 g.执行日期('m',标准时间('-1个月')的结果3月29日(非闰年)的代码>将是03,因为29比2月份的任何一天都大,因此strotime(“-1个月”)
将实际返回3月1日
相反,请使用以下命令:
date('n') - 1;
当月
(intval(date('m'))-1)%12
上个月,也包括12月/1月
date('m', strtotime('last month'));
无论您是否在一月,这都会起作用。(提示)date
将日期格式化为字符串。对字符串使用算术运算时,字符串将转换为整数。你现在应该可以弄清楚剩下的了。你不能用这种方法。想想一月吧,比如<代码>1-1是0
而不是12月(12
),确切的示例在哪里?我看不出来。该链接刚好到达手册页的顶部。@Treffynnon有一个获取上个月时间戳的示例。虽然,格式是留给你的家庭作业的,是的,我想这是你的意思,$lastmount=mktime(0,0,0,date(“m”)-1,date(“d”),date(“Y”)代码>@依我之见,Glebushka方法更容易阅读。我的观点是。但mktime比strottime拐杖灵活得多。我的观点是,如果你没有注意到,答案在手册页上,因此,你根本不需要Glebushka来获得答案。-1我不确定这是一个好的解决方案。日期('m')返回04,然后取04-1=3。但是1月1日-1日=0时会发生什么呢???最好用strotime创建一个修改过的日期,然后用date对它进行语法分析。@Col.Shrapnel,@Johan You's right,这只是将数字格式化为字符串的一种解决方案。我已经相应地编辑了答案。$result=((日期('m')-1)?:12)
。那里1月->12月已计算在内。在开始自己的工作之前阅读其他答案会更好。@1月?这样做的问题是,例如月份3月
会带来03
而不是3
如果需要不带零的月份,则将m改为n<代码>日期('n',标准时间('-1个月')代码>-实际上,如果在一个月的31号使用,可能会导致错误。您应该使用日期(“n”,标准时间(“上个月的第一天”);相反是正确的,但这将在1月返回0。。。日期(“n”,标准时间(“上个月的第一天”);这是一个很好的方法。
date('m', strtotime('last month'));