2013-05-21 6 views
-4

У меня есть две даты формы:Найдите разницу между двумя датами, используя PHP?

Start Date: 2013-05-19 
End Date: 2013-05-21 

Теперь мне нужно найти разницу между этими двумя в следующем виде:

2013-05-20 
2013-05-21 

Как я могу сделать это в PHP?

+0

мне нужна полная дата ... –

+0

зачем вам дату как разница? – karthikr

+0

Потому что мне нужна эта дата для данных запроса в базе данных. –

ответ

0

Это

$startDate = strtotime($date1); 
$endDate = strtotime($date2); 

$dates = array(); 

for($x = $startDate, $x <= $endDate; $x+=86400){ 
    $dates[] = date("Y-m-d", strtotime($x)); 
} 

должен дать вам то, что вы хотите.

+0

Как это может быть так? 2013-05-20 и 2013-05-21 –

+0

Извините неправильно поняли вопрос .... – Orangepill

+0

обновил ответ, чтобы отразить то, что я понимаю, вопрос сейчас. – Orangepill

0

Вы можете сделать что-то вроде:

$date_difference = strtotime('2013-05-21') - strtotime('2013-05-19');

Это даст вам секунд между двумя датами. Если вы хотите, чтобы в днях просто разделились на 86400.

Вы также можете использовать date_diff при использовании PHP 5.3+.

+0

Как это может произойти? 2013-05-20 и 2013-05-21 –

+0

Основываясь на ваших комментариях о необходимости этого для запроса базы данных ... почему бы просто не использовать BETWEEN '2013-05-20' AND '2013-05 -21' ? – Justin

0

Использование можно использовать DatePeriod класс

$begin = new DateTime('2013-05-19 + 1 day'); 
$end = new DateTime('2013-05-21 + 1 day'); 
$interval = new DateInterval('P1D'); 
$daterange = new DatePeriod($begin, $interval ,$end); 

foreach($daterange as $date){ 
    echo $date->format("Y-m-d") . "<br>"; 
} 

Выход:

2013-05-20 
2013-05-21 

Codepad example

Смежные вопросы