Dates can be a difficult thing upon which to get a handle. One of the frequently needed things is to add or subtract units of time.



This function takes a date, does the calculations and returns the new date.
It will work with years, months, weeks and days.

The 'given date' needs to be in the format YYYY-MM-DD.

<?php
########################################
#    A function for adding or subtracting
#    years, months, weeks or days
#    from a given date
#
# there are three parameters
#        1.    $periods_type  - this is the word years, months, weeks or days
#        2.    $periods_qty - this is how many years, months, weeks or days
#                this can be either positve (in the future from the given date)
#                or negative (before the given date)
#        3.    $givendate -    this is the given date in YYYY-MM-DD format)
#
#    It returns a date in the YYYY-MM-DD format
#########################################

function calcDate($periods_type$periods_qty,$givendate) {
    return 
date('Y-m-d'strtotime("$givendate $periods_qty $periods_type"));
}

######################################################
#
#        everything beyond here is simply a couple 
#        examples using the function
#
######################################################
echo "The given date is January 13, 2010 expressed as 2010-1-13. ";
echo 
"We will subtract 46 years from that date <br><br>";

$periods_type "years";
$periods_qty "-64";
$givendate "2010-01-13";

$what_date calcDate($periods_type,$periods_qty,$givendate);

if(
$periods_qty>0) {
  
$before_after "after";
}else{
  
$before_after "before";
  
$periods_qty $periods_qty * (-1);
}

echo 
$what_date " is " 
            
$periods_qty " " 
            
$periods_type " " 
            
$before_after " " 
            
$givendate;
echo 
"<hr>";
echo 
"The given date is today's date expressed as " date("Y-m-d") . ". ";
echo 
"We will add 64 days to that date<br><br>";

$periods_type "days";
$periods_qty "64";
$givendate date("Y-m-d");

$what_date calcDate($periods_type,$periods_qty,$givendate);

if(
$periods_qty>0) {
  
$before_after "after";
}else{
  
$before_after "before";
  
$periods_qty $periods_qty * (-1);
}

echo 
$what_date " is " 
            
$periods_qty " " 
            
$periods_type " " 
            
$before_after " " 
            
$givendate;
?>




Hope this is of use to you.