Ok, so this is what I ended up doing.
I used the PHP function date_default_timezone_set() to set my actual timezone: date_default_timezone_set(‘America/Toronto’).
Now, the output of CODE 1 (from my initial post), outputs the correct date, where before it was 2 hours behind.
I’m still not sure if this will fix all the problems; I’ll have to wait ’till 12:01 am to find out how the future posts behave.