Получить дату от трех с половиной месяцев назад

Я знаю, что могу сделать

$threemonthsago = date("Y-m-d", strtotime("-3 month"));
echo "$threemonthsago";

Однако я хочу получить 3,5 месяца назад, а не три месяца назад. Так я пытался сделать

$threemonthsago = date("Y-m-d", strtotime("-3.5 month"));
echo "$threemonthsago";

Однако, похоже, он не дает мне правильную дату, как, например, сентябрь, чего не должно быть с апреля текущего года.

2 ответа

Десятичная дробь скидывает strtotime() поскольку это недопустимый формат, он распознает. Реальная проблема у вас в том, что именно половина месяца? Если вы пройдете февраль, то получится очень рискованно.

Это несколько проще сделать с помощью DateTime() а также DateInterval() если точно указать, что такое половина месяца:

$date = new DateTime();
$new_date = $date->sub(new DateInterval('P3M15D'));
echo $new_date->format('Y-m-d');

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

echo(strtotime("-105 дней"));

Другие вопросы по тегам