Qual è il modo migliore per gestire diversi fusi orari?

8

Sto lavorando a un'applicazione web in cui ci saranno molti utenti diversi da tutto il mondo che fanno aggiornamenti. Mi chiedo quale sarebbe il modo migliore per gestire i fusi orari? Idealmente, quando si verifica un evento, tutti gli utenti lo visualizzano utilizzando i loro orari locali.

L'ora del sistema operativo del server deve essere impostata su GMT, tempo di localizzazione fisica o tempo di sviluppo del mio sito?

La logica dell'applicazione (PHP) e il database (MySQL) devono essere impostati per memorizzare i dati come GMT o ora locale (locale per gli utenti)?

C'è uno standard di settore o anche una soluzione semplice / ovvia che non vedo?

    
posta Thomas Hunter 24.02.2011 - 18:33
fonte

2 risposte

4

Salva i tuoi eventi nel formato TIMESTAMP di MySQL - è memorizzato internamente come UTC indipendentemente dal fuso orario del server / utente. In questo modo i dati sono portatili indipendentemente dalla configurazione specifica del tuo server. Se lo memorizzi in un determinato fuso orario, avrai molto più lavoro per convertirlo in diversi fusi orari.

Scaricalo dal database in un timestamp numerico (utilizzando la funzione UNIX_TIMESTAMP ()) da utilizzare con le varie funzioni di data / ora di PHP (come date ()).

Devi quindi impostare per ciascun utente il fuso orario di PHP usando date_default_timezone_set () : puoi ottenere tali informazioni tramite le impostazioni configurabili dall'utente o dalle intestazioni del browser (meno accurate). Puoi quindi utilizzare le funzioni di data / ora di PHP come faresti normalmente e l'output sarà nel fuso orario dell'utente.

Un'altra alternativa è mostrare il tempo relativo (ad esempio: "5 ore e 2 minuti fa").

    
risposta data 24.02.2011 - 18:39
fonte
7

Vorrei utilizzare l'ora UTC nel database e chiedere ai clienti di convertirli all'ora locale quando necessario

    
risposta data 24.02.2011 - 18:36
fonte

Leggi altre domande sui tag