I have some pretty extensive experience with this issue as we run a live TV broadcast.
Quick answer to you question is to use $config['allow_member_localization'] = "n";
in your config.php. This prevents any per user localization despite what is stored in exp_members AND subsequently what shows up in the member's profile.
Once you set this there's three ways I have confirmed to set the default localization:
- Under Members -> View All -> (select a member) -> Member Preferences you'll see "Use this member's localization settings as the master site default?" which if checked will set the default localization to the same as that user's. The thought behind this is that a "Super Admin" would keep their DST/TZ settings up to date I assume.
- Under Admin -> Localization. This sets the two configurations variables I will mention in the next bullet in the database but it is PER SITE so you'd need to set it for each site.
- I HIGHLY RECOMMEND using a site-wide config.php to set these two values.
$config['default_site_dst'] = (date("I")) ? "y" : "n";
and $config['default_site_timezone'] = "UM6";
Where UM6 is your timezone in EE's weird TZ formatting. Just be sure your server (and php) timezone is set properly (run "date" in the terminal to check).
There are also two other configuration values which I've seen floating around which I tend to ignore:
$config['honor_entry_dst']
doesn't exist anymore as of some EE version before mine (which is 2.4.0).
$config['daylight_savings']
this seems like the end all be all of settings but don't be fooled. My understanding of this variable based on scouring the source code is if you haven't used any of the prior methods to set the DST this is your default. I have NOT tested this as I end up just setting $config['daylight_savings'] = (date("I")) ? "y" : "n";
as well anyways.
I'd like to make one final note before signing off. I've always had to re-save entries made in a prior DST settings to get them back to the correct time. This is because the only data that is stored in exp_channel_data is the timezone not the DST setting which is rather unfortunate.