fork download
  1. <?php
  2.  
  3. $date1 = "12/06/2012";
  4. $date1 = str_replace("/", "-", $date1);
  5. // data americana
  6. $dateInicio = date('Y-m-d', strtotime($date1));
  7.  
  8. $date2 = "12/06/2017";
  9. $date2 = str_replace("/", "-", $date2);
  10. // data americana
  11. $dateFim = date('Y-m-d', strtotime($date2));
  12.  
  13. $time1=strtotime($date1);
  14. // ano data inicial
  15. $year1=date("Y",$time1);
  16.  
  17. $time2=strtotime($date2);
  18. // ano data final
  19. $year2=date("Y",$time2);
  20.  
  21. $difAno=$year2-$year1;
  22. // se a diferença em anos for maior que 0 calculamos ano inicial e final
  23. if ($difAno>0){
  24. // para ano inicial
  25. $fim = ($year1."-12-31");
  26. $datetime1 = new DateTime($dateInicio);
  27. $datetime2 = new DateTime($fim);
  28. $interval = $datetime1->diff($datetime2);
  29. echo "Ano: ".($year1)." - ";
  30. echo $interval->format('%m Meses %d dias');
  31.  
  32. echo "\n";
  33.  
  34. // para ano final
  35. $inicio = ($year2."-01-01");
  36. $datetime1 = new DateTime($inicio);
  37. $datetime2 = new DateTime($dateFim);
  38. $interval = $datetime2->diff($datetime1);
  39. echo "Ano: ".($year2)." - ";
  40. echo $interval->format('%m Meses %d dias');
  41.  
  42. echo "\n";
  43.  
  44. }
  45.  
  46. // se a diferença entre os anos for maior que 1 fazemos um loop para calcular os demais
  47. if ($difAno>1){
  48. for ($x = 1; $x <= $difAno-1; $x++) {
  49.  
  50. echo "Ano: ".($year1+$x)." - ";
  51. echo date("z", mktime(0,0,0,12,31,($year1+$x))) + 1;
  52. echo " = 12 meses \n";
  53.  
  54. }
  55. }
Success #stdin #stdout 0.01s 83904KB
stdin
Standard input is empty
stdout
Ano: 2012 - 6 Meses 19 dias
Ano: 2017 - 5 Meses 11 dias
Ano: 2013 - 365 = 12 meses 
Ano: 2014 - 365 = 12 meses 
Ano: 2015 - 365 = 12 meses 
Ano: 2016 - 366 = 12 meses