Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正在尝试获取当前月份的前一个月的编号_Php_Date - Fatal编程技术网

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个月')的结果将是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'));