Установка только года с помощью PHP DateTime - PullRequest
0 голосов
/ 26 февраля 2020

С помощью PHP DateTime вы можете использовать такие методы, как ->modify() ->add() и ->sub() для управления текущим объектом DateTime.

Есть также ->setDate() и ->setTime() методы, которые позволяют обновлять год, месяц и день или час, минуту и ​​секунду.

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

Прав ли я, полагая, что лучший метод - создать новый объект DateTime и использовать предыдущий объект для заполнения метода setDate()?

Примерно так:

$DateTime2020 = new \DateTime('2020-02-26');
$DateTime2019 = (new \DateTime())->setDate('2019', $DateTime2020->format('m'), $DateTime2020->format('d'));

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020
$DateTime2020 = new \DateTime('2020-02-26');

$year = 2019;

$DateTime2019 = date_create($DateTime2020->format($year."-m-d"));
// 2019-02-26 00:00:00.000000
0 голосов
/ 26 февраля 2020

Вы можете использовать те же обозначения, что и в методе ->format(), поэтому вам не нужно создавать объект и изменять его позже. Ниже приведен пример:

new \DateTime("$year-01-01") для динамо c год

new \DateTime("this year $month/01") для динам c месяц

Все возможные значения, которые вы можете найти здесь

В основном объект DateTime требует, чтобы все сегменты были действительными, и во время создания нового объекта php попытайтесь угадать сегменты, используя параметр конструктора (по умолчанию 2020-01-01 00:00:00 ), но когда вы устанавливаете DateTime (2019) php распознает его как часы: минуты (20:19), поэтому вам нужно быть более точным c, поэтому я добавил 01-01, который относится к месяцу и дню .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...