Получение N-го числа месяца с помощью DateTime ()

Мне нужно получить дату 10 числа текущего месяца. Этот способ не работает:

<?php 
$date_start = new DateTime();
$date_start->modify('tenth day of this month');
echo $date_start->format('Y-m-d H:i:s'), "\n";
?>

Полученные результаты:

Warning: DateTime::modify(): Failed to parse time string (tenth day of this month ) at position 10 (o): The timezone could not be found in the database in [...][...] on line 3

Конечно, я могу использовать date('Y-m-10'), но мне нужно сделать его с объектом DateTime ().

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
203
3

Ответы 3

Вы можете использовать setDate:

$date_start->setDate($date_start->format('Y'), $date_start->format('m'), 10);
echo $date_start->format('Y-m-d H:i:s'), "\n";

Выход:

2018-10-10 06:49:01

к сожалению, $date_start->modify('tenth day this month'); даст вам результат без исключения 2018-10-01 (исходная дата - 30.09.2018)

Martin 30.09.2018 23:15

@Martin интересно ... Сейчас октябрь, так что результат правильный. Но когда я пробую tenth day next month, я получаю «2018-11-09», что определенно неверно!

Nick 30.09.2018 23:17

Я нашел правильный способ:

<?php
$date_start = new DateTime();
$date_start->modify('first day of this month');
$date_start->modify('+9 days');
echo $date_start->format('Y-m-d');
?>

Результат на 30.09.2018:

2018-09-10

это спасло меня, спасибо .. это действительно вызывало у меня головную боль. вы можете просто сделать это как ->modify('first day of this month')->modify('+8 day');

gepex 24.04.2020 03:58

Я не думаю, что есть tenth day of this month, есть first day of this month:

Если вы хотите сделать это с DateTime таким образом, попробуйте дважды изменить что-то вроде этого:

  $date_start = new DateTime();
  $date_start->modify('first day of this month');
  $date_start->modify('+9 day');
  echo $date_start->format('Y-m-d H:i:s'), "\n";

да, я это вижу, после того, как я отправлю свой ответ, отправил передо мной 2 примерно две минуты :(

berramou 01.10.2018 01:54

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