/*! Subtracts a years object and a local_date_time. Result will be same
 * month and day-of-month as local_date_time unless original day was the
 * last day of month. see date_time::years_duration for more details */
inline
local_date_time
operator-(const local_date_time& t, const boost::gregorian::years& y)
{
    // get_neg_offset returns a negative duration, so we add
    return t + y.get_neg_offset(t.utc_time().date());
}
 /*! Subtracts a years object from a ptime. Result will be same 
  * month and day-of-month as ptime unless original day was the 
  * last day of month. see date_time::years_duration for more details */
 inline
 ptime 
 operator-=(ptime& t, const boost::gregorian::years& y)
 {
   // get_neg_offset returns a negative duration, so we add
   return t += y.get_neg_offset(t.date());
 }
/*! Adds a years object to a local_date_time. Result will be same
 * month and day-of-month as local_date_time unless original day was the
 * last day of month. see date_time::years_duration for more details */
inline
local_date_time
operator+=(local_date_time& t, const boost::gregorian::years& y)
{
    return t += y.get_offset(t.utc_time().date());
}
 /*! Adds a years object to a ptime. Result will be same 
  * month and day-of-month as ptime unless original day was the 
  * last day of month. see date_time::years_duration for more details */
 inline
 ptime 
 operator+=(ptime& t, const boost::gregorian::years& y)
 {
   return t += y.get_offset(t.date());
 }