2010-12-03 3 views
0

Я попрошу пользователя ввести дату начала и дату окончания. Я хотел бы получить все даты от начала до конца и получить количество дней между этими датами. Как я могу это сделать в PHP с датой начала и окончания.Разница начала и окончания даты в php

+0

http://stackoverflow.com/questions/676824/how-to-calculate-the-date-difference-between-2-dates-using-php – ArK 2010-12-03 07:47:35

ответ

0

Преобразование обеих дат в метки времени, а затем подсчет от одного к другому, переход к датам.

0

Имея дело с датами, вы можете преобразовать их в отметки времени (в секундах), как рекомендует Игнасио. Но в целом, если возможно, вам лучше работать с фактическими датами & дней на более высоком уровне.

Для этого, см класс DateTime, встроенный в PHP:

http://www.php.net/manual/en/class.datetime.php

http://www.php.net/manual/en/class.dateinterval.php

Это хорошо поддерживается в PHP 5.2, но PHP 5.3 добавляет еще лучше DateTime функциональность обработки.

0

Конечным результатом этого кода будет количество дней.

$ days = (strtotime (дата («Y-m-d»)) - strtotime («2010-08-20»))/(60 * 60 * 24); echo $ days;

0

В зависимости от ввода пользователя дает, я бы, скорее всего, будет использовать что-то вроде

$dateOne = (int)(mktime(0, 0, 0, $month1, $day1, $year1)/86400); //Get the first date as a unix timestamp, then convert to days. 
$dateTwo = (int)(mktime(0, 0, 0, $month2, $day2, $year2)/86400); //Get the second date as a unix timestamp, then convert to days. 

// Example 
//$dateOne = (int)(mktime(0,0,0,12,03,2009)/86400); 
//$dateTwo = (int)(mktime(0,0,0,08,19,2011)/86400); 

$daysBetween = $dateTwo-$dateOne; //Calculate days between. 

echo $daysBetween.'<br />'; //Echo the days between. 

for ($i=1; $i=$daysBetween; $i++) { //Loop through every day between, echo the date of that day. 
    echo date('Y-m-d', $dateOne*86400+($i*86400)).'<br />'; 
} 

Приведенный выше код дайте вам все дни, включая первую и последнюю дату. Чтобы получить только те, между изменениями:

for ($i=1; $i=$daysBetween; $i++) { //Loop through every day between, echo the date of that day. 

к:

for ($i=2; $i<=$daysBetween; $i++) { //Loop through every day between, echo the date of that day. 

Проверили, работает хорошо.

ПРИМЕЧАНИЕ: первая дата ДОЛЖНА быть до последней даты.

Приветствия Charlie

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