2016-05-22 3 views
0

Я использую date_diff, чтобы получить дни между двумя днями, как следует:date_diff поставляет неправильные отличия?

//DATE 
$current_date = date_create(date("m.d.y")); 
$move_date = date_create($move['moving_day']); 

/* Difference between Moving and Current Date */ 
$difference1 = date_diff($current_date, $move_date); 
$date_difference = $difference1->format('%a'); 

дата является 2016-05-30 и ток 2016-05-22, но он показывает мне 7, но она должна дайте мне 8.

print_r дать мне что

DateTime Object 
(
    [date] => 2016-05-22 05:22:16.000000 
    [timezone_type] => 3 
    [timezone] => UTC 
) 

DateTime Object 
(
    [date] => 2016-05-30 00:00:00.000000 
    [timezone_type] => 3 
    [timezone] => UTC 
) 

что я делаю неправильно?

+0

Обратите внимание на те '05: 22: 16' часы/минуты/секунды в текущую дату ..... теперь сколько целых дней между' 2016-05 -22 05: 22: 16' и '2016-05-30 00: 00: 00'? и сколько дней? –

+1

Если вы укажете '$ current_date = date_create ('today');', то вы получите '00: 00: 00' сегодня, а не текущее время. –

+0

Верно. Благодаря! date_create звучит как правильная функция, но я предполагаю, что я должен использовать annother один или просто извлечь дату. – Isengo

ответ

0

Результат является правильным, если изменить текущее время 2016-05-30 06:00:00 он вернется 8 дней

+0

спасибо. Я думал, что date_create просто создает дату, а не время. Есть функция только для даты? – Isengo

+0

try $ current_date = date ("Y") .'- '. Date ("m").'-'. Date ('d'). ' ».date ('G'). ':' (I '). ':'(С'); дата.' Дата. –

1

, если вы хотите, чтобы не зависеть от времени суток, сдвиг времени на 00:00:00 таким образом:

$current_date = date_create(date("m.d.y"))->modify('midnight'); 
$move_date = date_create($move['moving_day'])->modify('midnight'); 
Смежные вопросы