Как вы получаете сегодняшнюю дату, как объект даты?
Я пытаюсь вычислить разницу между датой начала и сегодня. Следующие не будут работать, потому что 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 ([date] => 2012-06-20 00:00:00 [timezone_type] => 3 [часовой пояс] => Америка / Los_Angeles)
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 , а затем этот код работал для меня.
Чтобы получить разницу в днях, используйте это:
$today = new DateTime('today');
время в этом объекте будет 00:00:00
Если вы хотите разницу с часами минут и секунд, используйте это:
$now = new DateTime('now');
Я закончил использование конструктора 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 [days] => 8)
Я понятия не имею, почему, но ответ Майка Б (и любой конструктор, который я пробовал для DateTime ), сделал ошибку для меня в PHP5 / IIS.