Di fronte a questo problema esatto, ho trovato questo riferimento , che mappa il conciso elenco di fusi orari in stile Windows a un sottoinsieme dell'elenco ridicolmente esaustivo di fusi orari in stile Unix.
Agli utenti viene presentato un elenco a discesa di questi nomi in stile Windows (ad es. (GMT-05:00) Eastern Time (USA e Canada)) e la loro selezione viene archiviata nel db nel formato in stile unix (ad es. America/New_York )
Il lavoro di applicazione della preferenza del fuso orario dell'utente viene svolto in PHP al momento della visualizzazione, utilizzando Classe DateTime . Penso che lo consiglierei, così puoi essere certo che le date che stai manipolando in SQL/PHP sono sempre in UTC, finché non vengono visualizzate.