2011-07-05 5 views
1

Possible Duplicate:
How to find number of days between two dates using phpСравнение двух SQL даты с PHP

Я пытаюсь сравнить две даты, которые хранятся в двух PHP переменных. $curDate и $prevDate хранятся в формате yyyy-mm-dd. Чтобы просто отобразить их, я использовал date("n,j,Y", strtotime($prevDate)) или другую комбинацию первых параметров функции даты.

Я хочу, чтобы сравнить $curDate и $prevDate в масштабе дней, но беда в том, 31 может быть 1 день с 1-го, так что если я просто смотрю на дату таким образом, то я не могу справиться с этим поведение.

Я изучил функцию PHP JulianToJD(), но не могу просто передать дату SQL, отформатированную через date() и strtotime().

Может кто-нибудь помочь мне разобраться в умном способе сравнения двух дат в масштабе дней, обращая внимание на конец месяца?

+1

См http://stackoverflow.com/q/2040560/469210 – borrible

+0

@borrible Это работало. Добавьте это как ответ, и я приму это. – tnw

ответ

3

См. Stackoverflow.com/q/ 2040560/469210. То есть вычислить дифференциал дат и применить функцию пола:

floor($datediff/(60*60*24)); 
3

Вы можете сделать это двумя способами:

MySQL:

SELECT (TO_DAYS(curDate) - TO_DAYS(prevDate)) as Days ... 

, который дает разницу в днях (TO_DAYS() возвращает количество дней, прошедших с года 0)

PHP, используя DateTime :

$prev = DateTime::CreateFromFormat('Y-m-d', $prevDate); 
$cur = DateTime::CreateFromFormat('Y-m-d', $curDate); 

$days = $cur->diff($prev)->format('%a'); 
+0

Это выглядит хорошо, однако я получаю сообщение об ошибке в первой строке PHP, '$ prev = ....': 'Ошибка анализа: ошибка синтаксиса, неожиданный T_STRING, ожидающий T_VARIABLE или '$' – tnw

+0

Woops, извините. выньте «новую» часть. Я отредактирую ответ. –

+0

+1 Мне не нравится способ MySQL; PHP-путь приятный и чистый! – Eljakim

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