- var_dump: documentation ( source)
- date_default_timezone_set: documentation ( source)
<?php
date_default_timezone_set('America/Chicago');
var_dump(new \DateTime('-1 month 4:20am'));
var_dump((new \DateTime('4:20am'))->sub(new DateInterval('P1M')));
var_dump(new DateTime('last month'));
var_dump(new DateTime('2014-02-28 - 1 month'));
var_dump(new DateTime('2014-10-30 - 1 month'));
var_dump(new DateTime('2014-10-31 - 1 month'));
var_dump(new DateTime('2014-11-31 - 1 month'));