2015-04-17 2 views
3

я на функции, проходящей некоторый параметр т.п.Как получить разницу между двумя день в PHP

everyWeekOn("Mon",11,19,00) 

Я хочу, чтобы вычислить разницу между текущим днем ​​(например, «ПТ») и прошел день параметра т.е. Mon.

Вывод должен быть:

The difference between Mon and Fri is 3 

Я попробовал, как этот

$_dt = new DateTime(); 
error_log('$_dt date'. $_dt->format('d')); 
error_log('$_dt year'. $_dt->format('Y')); 
error_log('$_dt month'. $_dt->format('m')); 

Но знаю, что я не знаю, что делать дальше, чтобы получить разницу между двумя днями.

Обратите внимание, что этот вопрос отличается от How to calculate the difference between two dates using PHP?, потому что у меня есть только день, а не полная дата.

+1

@martin мой вопрос пожалуйста, проверьте сначала –

+0

Да, спасибо за разъяснение, я неправильно понял. – martin

ответ

3

Просто реализовать DateTime класс в сочетании с ->diff методом:

function everyWeekOn($day) { 
    $today = new DateTime; 
    $next = DateTime::createFromFormat('D', $day); 
    $diff = $next->diff($today); 
    return "The difference between {$next->format('l')} and {$today->format('l')} is {$diff->days}"; 
} 

echo everyWeekOn('Mon'); 
+1

thax @ghost вы спасете мою задницу;) –

+0

Удивительный приятель thax за помощь –

+1

@ Сэндзи уверен, что это помогло – Ghost

0

Нет. дней в течение двух дней путем использования этого кода

<?php 
    $today = time(); 
    $chkdate = strtotime("16-04-2015"); 
    $date = $today - $chkdate; 
    echo floor($date/(60*60*24)); 
?> 

Пожалуйста, используйте этот МАЕ это поможет вам

+1

WATCH OUT: не все дни 86400 (60 * 60 * 24) секунд! Это может иметь неожиданные результаты, если сервер не использует UTC в качестве часового пояса! Вместо этого используйте 'DateTime' и его методы. – Qualcuno

1
$date = new DateTime('2015-01-01 12:00:00'); 
$difference = $date->diff(new DateTime()); 
echo $difference->days.' days <br>';