Как я могу разобрать дату на тот же день предыдущего месяца?

Как я могу разобрать дату на тот же день предыдущего месяца в PHP?

Пример:

   input                 Output

2018-07-25     ->       2018-06-25
2018-07-31     ->       2018-06-30 (because there is no 31)

Мой код

$d = "2018-07-25";
$xd = date_parse_from_format("y-m-d", $d last month);
$output_d = date_create($xd)->format('Y-m-d');

1

Решение

<?php
$date = new DateTimeImmutable("2018-07-31");
$previous = $date->sub(new DateInterval('P1M'));
$lastMonth= $date->modify('last day of previous month');
if ($previous > $lastMonth) {
$previous = $lastMonth;
}
echo $previous ->format('Y-m-d');

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

демонстрация

3

Другие решения

Возвращение к одному месяцу похоже на вычитание одного месяца из существующей даты, поэтому с помощью strtotime и date мы можем решить эту проблему. лайк,

$a = "2018-07-25";
$b = date("Y-m-d",strtotime($a."-1 month"));
$b is 2018-06-25

Надеюсь это поможет.

-1

По вопросам рекламы [email protected]