как получить текущую дату/время в качестве объекта даты в 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 [часовой пояс] =>Америка/Лос-Анджелес)
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, и тогда этот код сработал для меня.
Чтобы получить разницу в днях, используйте это:
$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 ([y]=> 0 [m]=> 0 [d] => 8 [h] => 6 [i] => 30 [s] => 40 [инвертировать] => 1 [дней] => 8 )
Я понятия не имею, почему, но ответ Майка Б (и любой конструктор, который я пробовал для Даты и времени) выдал мне ошибку в PHP5/IIS.