2010-04-21 2 views
1

Есть ли все-таки, чтобы найти разницу во времени в php? У меня есть ввод с даты 2003-10-17 и дата 2004-03-24. Мне нужны результаты, сколько дней в течение этих двух дней. Скажите, если 224 дня, мне нужен выход только в дни.Найти разницу на дате в php?

Я нахожу решение через mysql, но мне нужно в php. Кто-нибудь мне поможет, спасибо заранее.

ответ

2

Вы можете использовать функцию синтаксического анализа временных меток для преобразования даты, чтобы временные метки, вычитать метки времени, а затем конвертировать полученные метки времени (в секундах) до нескольких дней:

floor((strtotime("2004-03-24") - strtotime("2003-10-17"))/86400); 
+0

Спасибо приятно ответить на этот – Karthik

5
$start = new DateTime('2003-10-17'); 
$end = new DateTime('2004-03-24'); 
$diff = $start->diff($end); 

echo $diff->format('%d days'); 

... должны это сделать.

Для справки см. DateTime и DateInterval.

Имейте ввиду, что это доступно только в PHP 5.3.

+0

я получил этот тип ошибки: Фатальная ошибка: Class «DateTime» не найдено – Karthik

+0

@ Karthik: да, извините ... Я бы сказал, что он доступен только с PHP 5.3. –

+1

Я бы использовал DateTime :: createFromFormat ('! Y-m-d', '2003-10-17'), главным образом потому, что мне не нравится в зависимости от функциональности магии strtotime. Я всегда чувствую, что он перепутает месяц и день, хотя кажется, что он работает правильно с форматом yyyy-mm-dd. – goat

0

Пример, как показано ниже:

$startDate = new DateTime('2013-04-01'); //intialize start date 
$endDate = new DateTime('2013-04-30'); //initialize end date 
$holiday = array('2013-04-11','2013-04-25'); //this is assumed list of holiday 
$interval = new DateInterval('P1D'); // set the interval as 1 day 
$daterange = new DatePeriod($startDate, $interval ,$endDate); 
foreach($daterange as $date){ 
if($date->format("N") <6 AND !in_array($date->format("Y-m-d"),$holiday)) 
$result[] = $date->format("Y-m-d"); 
} 
echo "<pre>";print_r($result); 

Деталь блог здесь: http://goo.gl/YOsfPX

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