1

I wrote this code but i can output everything expect difference between there dates ?

what can i do to get difference between dates ?

out put
Your Birthday 1993/05/29
Today date is 2014/12/01
Differnce between days is

<?php
if(isset($_POST['submit']))
  {
  $brt_dat = $_POST['brt_dat'];
  $tdy_dat = date("Y/m/d");
  echo "Your Birthday $brt_dat<br>";
  echo "Today date is $tdy_dat<br>";
  $diff = date_diff($tdy_date,$brt_day);
  echo "Differnce between days is $diff";
  }
  ?>`
 <html>
 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <input type="date" name="brt_dat" placeholder="(YYYY/MM/DD)" >
  <input type="submit" name="submit"  value="calculate">
  </form>
  </html>

2 Answers2

0
<?php 
$brt_dat = $_POST['brt_dat'];
$tdy_dat = date("Y/m/d");
echo "Your Birthday $brt_dat<br>";
echo "Today date is $tdy_dat<br>";
$diff = date_diff($tdy_date,$brt_day);

$date1 = date('Y-m-d',strtotime($brt_dat));
$date2 = date('Y-m-d',strtotime($tdy_dat));

$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("Differnce between days is %d years, %d months, %d days\n", $years, $months, $days);

//As of PHP version >= 5.3, You can use this code to display all dates between two
$begin = new DateTime($date1);
$end = new DateTime($date2);

$daterange = new DatePeriod($begin, new DateInterval('P1D'), $end);

foreach($daterange as $date){
    echo $date->format("Y-m-d") . "<br>";
}

?>
Manish Jangir
  • 5,329
  • 4
  • 42
  • 75
0

Use datetime :

  $brt_day = new DateTime('1993/05/29');//in your example use $_POST['brt_dat']
  $tdy_dat = new DateTime();

  $interval = $brt_day->diff($tdy_dat);

  echo $interval->format('%a days');

To show all date between two dates :

$brt_day = new DateTime('1993/05/29');
$tdy_dat = new DateTime();

while($brt_day<$tdy_dat){
    echo $brt_day->format('Y/m/d').'<br />';
    $brt_day->modify('+1day');
}
Benjamin Poignant
  • 1,066
  • 8
  • 18