Подтвердить что ты не робот

Попытка получить номер за месяц до текущего месяца

Я пытаюсь получить число месяцем ранее текущего месяца (теперь это 04 (апрель), поэтому я пытаюсь получить 03). Я пробую это:

date('m')-1;

но я получаю 3. Но я хочу получить 03.

4b9b3361

Ответ 1

Правильный способ сделать это действительно:

date('m', strtotime('-1 month'));

Как вы увидите, в январе с другими ответами происходят странные вещи.

Ответ 2

В настоящее время принятый ответ приведет к неправильному ответу, если день месяца (для текущего дня) больше, чем в последний день месяца за предыдущий месяц.

например. Результат выполнения date('m', strtotime('-1 month')); 29 марта (в течение не-високосного года) будет 03, потому что 29 больше, чем любой день месяца в феврале, и, таким образом, strtotime('-1 month') действительно вернется 1 марта.

Вместо этого используйте следующее:

date('n') - 1;

Ответ 4

Результатом вашего расчета является число. Если вы хотите отформатировать его как строку, вы можете использовать:

$result = date('m')-1;
$string_result = sprintf("%02s", $result);

Изменить: Обратите внимание, что это лишь частичное решение для форматирования числа, такого как строка.

Ответ 5

intval(date('m'))

за текущий месяц

(intval(date('m'))-1)%12

за предыдущий месяц, также за декабрь/январь

Ответ 6

date('m', strtotime('last month'));

Это будет работать независимо от того, в январе вы или нет

Ответ 7

Это тоже работает.

printf("%02s", (date('m') - 1));

Ответ 8

Это должно сделать это для вас...

str_pad(date('m')-1,  2, '0', STR_PAD_LEFT);