Datetime objects using the SDK

I am baffled here.
Trying to figure out how the REST API is figuring out dates.
There is no consistency between the apps that I have tried.

Xml Service returns
[_SubscriptionDate] => DateTime Object
(
[date] => 2017-02-24 18:15:00.000000
[timezone_type] => 3
[timezone] => UTC
)
which is how it shows in my EST app, not UTC.

The same contact returned via the rest service gives
[47] => Array
(
[id] => 464
[content] => 2017-02-24T23:15:00.000+0000
)

There is a 5hr difference in what should be showing here and does not correlate to UTC timezone

This same thing happens with another app that is in AZT except it is a 4 hour difference

Is IFS returning the DateTime in whatever the server time is on their end and saying it is UTC?

Why does every datetime show UTC when it is not?

If I create a new datetime for my timezone, say AZT, and convert it to UTC for the api it does not show correctly in the UI, but if I upload my datetime object as is (AZT) it shows in the UI correctly?

Nothing here makes sense.

On a related note, when creating payplans via the SDK it requires the time to be in UTC or it launches the payplan on the wrong day if after a certain time.

Where is the consistency? Why do all the doc strings still say that the methods take strings and not objects?
Ex: * @param string $plantStartDate

Bah who cares right. Check out my PHP code here I am using the SDK and making tokens live forever… Took me awhile to figure it all out but it’s working well now: Sample PHP Project with OAuth