title: DateTime "first day of last month" not returning the first day
body: <p>I looked at <a href="https://stackoverflow.com/a/9735891/404623">this answer</a> already, and it's quite close to what I have.</p>
  
  <p>Here is my PHP code:</p>
  
  <pre><code>$start = new DateTime('0:00 first day of previous month', new DateTimeZone('UTC'));
  /*
  if (isset($_GET['year']) &amp;&amp; isset($_GET['month']) &amp;&amp; checkdate($_GET['month'], 1, $_GET['year'])) {
      $start = DateTime::createFromFormat('Y-m-d', $_GET['year'] . '-' . $_GET['month'] . '-1');
  }*/
  $middle = DateTime::createFromFormat('U', strtotime('first day of last month', $start-&gt;format('U')));
  $middle-&gt;setTimezone(new DateTimeZone('UTC'));
  $end = DateTime::createFromFormat('U', strtotime('first day of 2 months ago', $start-&gt;format('U')));
  $end-&gt;setTimezone(new DateTimeZone('UTC'));
  
  var_dump($start);
  var_dump($middle);
  var_dump($end);
  </code></pre>
  
  <p>Today is August 27th, so I would expect July 1, June 1, and May 1. Here's what the actual output is:</p>
  
  <pre><code>object(DateTime)[1]
    public 'date' =&gt; string '2013-07-01 00:00:00' (length=19)
    public 'timezone_type' =&gt; int 3
    public 'timezone' =&gt; string 'UTC' (length=3)
  
  object(DateTime)[2]
    public 'date' =&gt; string '2013-05-02 00:00:00' (length=19)
    public 'timezone_type' =&gt; int 3
    public 'timezone' =&gt; string 'UTC' (length=3)
  
  object(DateTime)[3]
    public 'date' =&gt; string '2013-04-02 00:00:00' (length=19)
    public 'timezone_type' =&gt; int 3
    public 'timezone' =&gt; string 'UTC' (length=3)
  </code></pre>
  
  <p>Why is it returning the second day of the months for me?</p>
  
  <p>I've also tried it without the <code>new DateTimeZone('GMT')</code> as the second parameter of the constructor for the initial <code>DateTime</code> but it still gives me the same result, just with different times.</p>