Как я могу создать нулевой DateTime с php? - PullRequest
0 голосов
/ 09 ноября 2019

Мне нужно создать пустую дату с DateTime (). Итак, все нули. Время должно отображаться таким образом: 0000:00:0:00:00.

Что я пробовал:

$date = new DateTime("2019-05-09 12:07");
$date->setTime(0, 0);
$date->setDate(0, 0, 0);
echo $date->format("Y:W:j:H:i");

Это выводит

-0001:49:30:00:00

вместо 0000:00:0:00:00

Что я могу сделать, чтобы достичь нулевой даты?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2019

Более подробное объяснение того, что идет не так, как то, как добиться того, к чему вы стремитесь - даже если это возможно.

С точки зрения даты - 0 недействительно как для месяца, так и для дня. В руководстве приведен пример

Пример # 2 Значения, превышающие диапазоны, добавляются к их родительским значениям

Так что, если у вас больше, чемколичество дней в месяце, это сделает его следующим месяцем

В вашем случае это почти наоборот, число меньше начала месяца. Так что 0 как месяц и день, он будет действовать как -1, так что если вы отформатировали его как

echo $date->format("Y:m:d:H:i");

, то получится

-0001:11:30:00:00

Итак, как вы можете видеть, деньи месяц 0-1 (11 и 30), и это переполнилось годом с -1.

0 голосов
/ 09 ноября 2019

Нет, Вы не можете сделать дату / время 0000:00:0:00:00 из DateTime()

php > echo (new DateTime("0000-00-00 00:00:00"))->format("Y-W-j H:i");
-0001-49-30 00:00
php > echo (new DateTime())->setISODate(0,0,0)->setTime(0,0,0,0)->format("Y-W-j H:i");
-0001-52-26 00:00

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