title: DateInterval is 1 month and 2 days from 2018-03-01 to 2018-04-01
body: <p>I have a Convention object with an startDate and an endDate. I want to clone this object allowing to choose a new startDate. Then I'll move all dates of child objects according to this date displacement.</p>
  
  <p>This is what I have:</p>
  
  <pre><code>$newDate = $_POST('newDate');
  
  $originalConventionBeginDate = clone $convention-&gt;getBeginDate();
  $newConvention = clone $convention;
  
  $jumpInterval = $originalConventionBeginDate-&gt;diff($newDate);
  error_log(sprintf("Original: %s", print_r($originalConventionBeginDate, true)));
  error_log(sprintf("New date: %s", print_r($newDate, true)));
  error_log(print_r($jumpInterval, true));
  
  //more code adding $jumpInterval to child objects' dates
  foreach ($newConvention-&gt;getHallReservation() as $newHallR)
  {
      $prevDate = clone $newHallR-&gt;getDate();
      $prevDate-&gt;add($jumpInterval);
      $newHallR-&gt;setDate($prevDate);
  }
  </code></pre>
  
  <p>The result is, if I clone a convention starting in <code>2018-03-01</code> to <code>2018-04-01</code>, <code>$jumpInterval</code> is <em>1 month and 3 days</em>, so, while new Convention is set to start at <code>2018-04-01</code> its child objects are set to <code>2018-04-04</code>.</p>
  
  <p>This is my log info:</p>
  
  <blockquote>
    <p>Original: DateTime Object ( [date] => 2018-03-01 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin )</p>
    
    <p>New date: DateTime Object ( [date] => 2018-04-01 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Berlin )</p>
    
    <p>DateInterval Object ( [y] => 0 [m] => 1 [d] => 3 [h] => 0 [i] => 0 [s] => 0 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 0 [days] => 31 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 ) </p>
  </blockquote>
  
  <p>I can see that jumpInterval has also <code>[days] =&gt; 31</code> which seems more accurate than <code>[m] =&gt; 1 [d] =&gt; 3</code>, maybe it has something to do that right now we are in February and this month has 28 days??</p>
  
  <p>What is the correct operation over <code>$originalConventionBeginDate</code> and <code>$newDate</code>?</p>
  
  <p>Thanks</p>
  
  <p><strong>EDIT</strong>: Added the <code>add()</code> bit to code</p>