Not sure if you're still looking for help with this... this is what I've done before. I'll have my servers set to UTC, and my site is going by EST. You can choose any two that you want, but UTC is good because it doesn't change with daylight savings.
/**
* Hourly difference between Eastern Time and UTC.
*/
define('OFFSET_HOURS_ET', time() > strtotime('Second Sunday March 0') && time() < strtotime('First Sunday November 0') ? 4 : 5);
/**
* Timestamp converted to Eastern Time.
*/
define('TIMESTAMP_ET', (TIMESTAMP - OFFSET_ET));
I put these defines somewhere that all the code on my site can access, and whenever I want the EST timestamp, I can always use TIMESTAMP_ET .... when I store dates and timestamps in the database, I'll always store it as the server's current timestamp (UTC) which is just time()
Not sure if that can help in any way. Basically you need an anchor timezone like UTC and then change the hours to whatever timezone you want the user's to see (or just your own local timezone for convenience). Figure out the day that your local timezone changes and set the hour change there. There's probably better time management handling in PHP out there but this has worked great.
Senior Software Engineer - RotoGrinders