Как получить текущую дату/время в качестве объекта даты в 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.