2015-09-30 3 views
-2

Я пытаюсь показать разницу в днях и месяцах между 2 датамиРазница в Великобритании Даты

$date1 = $start; 
$date2 = $end; 
$diff = abs(strtotime($date2) - strtotime($date1)); 
$years = floor($diff/(365*60*60*24)); 
$months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24)); 
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 

printf("%d years, %d months, %d days\n", $years, $months, $days); 

Однако это показывает, как 0 years, 0 months, 0 days

Даты в $start и $end в формате DD/MM/YYYY

+0

@Prafulla кто этот комментарий для? – Shaun

+0

Ваш вход имеет неправильный формат. Вы должны использовать другой формат или 'DateTime :: createFromFormat'. Использование объекта DateTime делает ваш код еще проще, и вы можете просто использовать 'DateTime :: diff()' $ d1 = DateTime :: createFromFormat ("d/m/Y", $ date1); $ d2 = DateTime :: createFromFormat ("d/m/Y", $ date2); $ span = $ d1-> diff ($ d2); printf ("% d лет,% d месяцев,% d дней \ n", $ span-> y, $ span-> m, $ span-> d); – Philipp

+0

@shaun, на самом деле я комментирую derenir, который удалил свой комментарий – Prafulla

ответ

1

Как вы заявили в своем комментарии, что Даты в $start и $end находятся в формате DD/MM/YYYY. Таким образом, вы должны сначала заменить, что в d-m-Y с помощью str_replace или DateTime::createFromFormat так попытайтесь использовать как в качестве

$date1 = str_replace('/','-',$start); 
$date2 = str_replace('/','-',$end); 

PHP date conversion to strtotime

+0

Спасибо, но все еще показывается как '0. 0, 0' – Shaun

+1

Игнорировать меня ... отлично работает, спасибо! – Shaun

+1

Я сделаю, как только это позволит мне (через 5 минут) – Shaun

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