2015-10-28 1 views
-1

я следующее:PHP - разница между 2 датами в днях

$dateStart = get_post_meta(get_the_ID(), 'startdate' , true); 
$dateStart = DateTime::createFromFormat('d/m/Y h:i:s', $dateStart); 
$dStart = $dateStart->format('d/m/y');true); 
$dEnd = date("d/m/y"); 
echo $dStart .'-'.$dEnd; 

12/06/15-28/10/15 Это выводит, но и для жизни меня я не могу работать, как получить разницу в днях между двумя датами.

Любые советы? Я пробовал несколько вещей, но они каждый раз ошибаются.

Благодаря

+5

Возможный дубликат [Как рассчитать разницу между двумя датами с помощью PHP?] (http://stackoverflow.com/questions/676824/how-to-ca lculate-the-difference-between-two-dates-using-php) – user2959229

ответ

-1

Использование DateTime :: дифференциалов - http://php.net/manual/en/datetime.diff.php

$dateStart = DateTime::createFromFormat('d/m/Y h:i:s', $dateStart); 
$dateEnd = new DateTime(); 
$difference = $dateStart->diff($dateEnd); 

Также отметим, что не проходя конец Diff() будет Предположим теперь. Так это будет работать и в Вашем конкретном примере:

$dateStart = DateTime::createFromFormat('d/m/Y h:i:s', $dateStart); 
$difference = $dateStart->diff(); 
+0

Извините - вам не повезло с этим – pee2pee

+0

@ pee2pee Это правильный способ сделать это. Возможно, вы могли бы показать мне больше кода и подробно рассказать о том, что вы пытаетесь получить от него? Это даст вам временную метку разницы, параметры форматирования доступны с помощью $ difference-> format(). Возможно, прочитайте мою документацию по PHP? –

+0

Я скопировал/вставлял именно то, что вы разместили, но страница заканчивается пустым – pee2pee

0

Используйте это (рабочий пример)

date_default_timezone_set("Asia/Colombo"); 

$dateStart = get_post_meta(get_the_ID(), 'startdate' , true); 
$datetime1 = new DateTime(date('Y-m-d', $dateStart)); 
$datetime2 = new DateTime(date('Y-m-d', $dateStart))); 

$interval = $datetime1->diff($datetime2); 
$date_diff = $interval->format('%R%a days'); 

echo "Difference is ".$date_diff 
+0

можете ли вы прокомментировать причину, пожалуйста? –

+1

Это отличный ответ. К сожалению, аскер не может работать с объектами DateTime ... –

+0

@MikelBitson thanx for hlps –

-1
$daysBefore = round(abs(strtotime(Date("l, d F Y"))-strtotime($dateStart))/86400); 
$daysAfter = round(abs(strtotime(Date("l, d F Y"))-strtotime($dateEnd))/86400); 

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

+0

Зачем кому-то отмечать правильный ответ? Странный. – pee2pee

+0

^Скорее всего, потому что это невероятно сложно читать и понимать, использует слишком много вызовов функций в одной строке и не использует (современный) отраслевой стандарт для дат PHP (DateTime). –

+0

Но, видя, что ни один из других примеров не работает, и этот делает ... – pee2pee