Seems like a significant differences between php 5.3 and 5.6:
php -r "new DateTimeZone( '-0400' );"
------------- --------------
- PHP 5.3.3 - - PHP 5.6.30 -
------------- --------------
DateTimeZone::__construct(): Works as expected.
Unknown or bad timezone (-0400)
php -r '$tz = new DateTimeZone( "EDT" ); echo $tz->getName();';
------------- --------------
- PHP 5.3.3 - - PHP 5.6.30 -
------------- --------------
America/New_York EDT
php -r '$tz = new DateTimeZone( "EDT" ); echo $tz->getName();';
------------- --------------
- PHP 5.3.3 - - PHP 5.6.30 -
------------- --------------
DateTimeZone Object DateTimeZone Object
( (
) [timezone_type] => 2
[timezone] => EDT
)