как получить текущую дату/время в качестве объекта даты в PHP


Как получить сегодняшнюю дату в качестве объекта даты?

Я пытаюсь вычислить разницу между некоторой датой начала и сегодняшним днем. Следующее не будет работать, потому что getdate() возвращает массив, а не объект даты:

$today = getdate();           
$start = date_create('06/20/2012');
$diff = date_diff($start, $today);

echo($today . '<br/>' . $start . '<br/>' . $diff);

Вывод:

Массив ([секунды] => 8 [минут] => 1 [часов] => 16 [день недели] => 11 [день недели] => 1 [понедельник] => 6 [год] => 2012 [день недели] => 162 [день недели] => Понедельник [месяц] => Июнь [0] => 1339455668 )

Объект даты и времени ([дата]=> 2012-06-20 00:00:00 [тип часового пояса] => 3 [часовой пояс] =>Америка/Лос-Анджелес)

Author: McGarnagle, 2012-06-12

3 answers

new DateTime('now');

Http://www.php.net/manual/en/datetime.construct.php

Сравнивать легко:

$today = new DateTime('now');
$newYear = new DateTime('2012-01-01');

if ($today > $newYear) {

}

Редактирование Op Мне просто нужно было вызвать date_default_timezone_set, и тогда этот код сработал для меня.

 38
Author: Mike B, 2012-06-12 00:56:25

Чтобы получить разницу в днях, используйте это:

$today = new DateTime('today');

Время в этом объекте будет 00:00:00

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

$now = new DateTime('now');
 11
Author: Skipper, 2014-03-26 15:39:32

В итоге я использовал конструктор date_create (без параметра), чтобы получить текущую дату.

$diff = date_diff(date_create('06/20/2012'), date_create());
print_r($diff);

Выход:

Объект DateInterval ([y]=> 0 [m]=> 0 [d] => 8 [h] => 6 [i] => 30 [s] => 40 [инвертировать] => 1 [дней] => 8 )

Я понятия не имею, почему, но ответ Майка Б (и любой конструктор, который я пробовал для Даты и времени) выдал мне ошибку в PHP5/IIS.

 0
Author: McGarnagle, 2012-06-12 00:34:01