Есть ли способ найти разницу в месяце в PHP? У меня есть данные от 2003-10-17 и 2004-03-24. Мне нужно выяснить, сколько месяцев осталось в течение этих двух дней. Скажем, если 6 месяцев, мне нужен выход только в месяцах. Спасибо, что направил меня на разницу в день.
Я нахожу решение через MySQL, но оно мне нужно на PHP. Кто-нибудь, помогите мне, спасибо заранее.
function monthsDif($start, $end) { // Assume YYYY-mm-dd - as is common MYSQL format $splitStart = explode('-', $start); $splitEnd = explode('-', $end); if (is_array($splitStart) && is_array($splitEnd)) { $startYear = $splitStart[0]; $startMonth = $splitStart[1]; $endYear = $splitEnd[0]; $endMonth = $splitEnd[1]; $difYears = $endYear - $startYear; $difMonth = $endMonth - $startMonth; if (0 == $difYears && 0 == $difMonth) { // month and year are same return 0; } else if (0 == $difYears && $difMonth > 0) { // same year, dif months return $difMonth; } else if (1 == $difYears) { $startToEnd = 13 - $startMonth; // months remaining in start year(13 to include final month return ($startToEnd + $endMonth); // above + end month date } else if ($difYears > 1) { $startToEnd = 13 - $startMonth; // months remaining in start year $yearsRemaing = $difYears - 2; // minus the years of the start and the end year $remainingMonths = 12 * $yearsRemaing; // tally up remaining months $totalMonths = $startToEnd + $remainingMonths + $endMonth; // Monthsleft + full years in between + months of last year return $totalMonths; } } else { return false; } }
<?php # end date is 2008 Oct. 11 00:00:00 $_endDate = mktime(0,0,0,11,10,2008); # begin date is 2007 May 31 13:26:26 $_beginDate = mktime(13,26,26,05,31,2007); $timestamp_diff= $_endDate-$_beginDate +1 ; # how many days between those two date $days_diff = $timestamp_diff/2635200; ?>
Ссылка: http://au.php.net/manual/en/function.mktime.php#86916
Вот быстрый:
$date1 = mktime(0,0,0,10,0,2003); // m d y, use 0 for day $date2 = mktime(0,0,0,3,0,2004); // m d y, use 0 for day echo round(($date2-$date1) / 60 / 60 / 24 / 30);