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

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

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

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

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

Вывод:

Array ([seconds] = > 8 [minutes] = > 1 [hours] = > 16 [mday] = > 11 [wday] = > 1 [mon] = > 6 [year] = > 2012 [yday] = > 162 [день недели] = > понедельник [месяц] = > июнь [0] = > 1339455668)

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

Ответ 1

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) {

}

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

Ответ 2

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

$today = new DateTime('today');

время в этом объекте равно 00:00:00

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

$now = new DateTime('now');

Ответ 3

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

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

Вывод:

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

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