Mysql
 sql >> Database >  >> RDS >> Mysql

Memorizzazione di valori di data/ora specifici per utenti in fusi orari diversi

Dal momento che stai parlando di pianificazione del futuro tempo, memorizzando solo UTC non è necessariamente l'approccio migliore.

Tieni presente che le regole del fuso orario possono (e cambiano). Se applichi un aggiornamento ai dati del tuo fuso orario (in PHP, è fatto con timezonedb di PECL pacchetto), tutti i dati che hai già convertito in UTC potrebbero non essere validi.

La soluzione migliore è memorizzare più valori:

  • La data e l'ora locali originali

  • Il fuso orario originale (es. "America/New_York" )

  • La data e l'ora UTC, convertite dai valori locali

Quando vuoi vedere se è ora di eseguire l'attività, devi confrontare la data e l'ora UTC correnti con il valore UTC memorizzato.

Quando applichi gli aggiornamenti del fuso orario, elimini i precedenti valori UTC convertiti per tutte le voci future e ricalcoli quelli nuovi in ​​base ai dati aggiornati.

Se non lo fai, stai perdendo l'intento originariamente fornito dall'utente. E se non mantieni aggiornati i dati del tuo fuso orario, il tuo sistema non sarà a conoscenza di vari cambiamenti in corso in tutto il mondo, come le modifiche apportate in Egitto all'inizio di quest'anno o le modifiche in arrivo a ottobre per la Russia.

Ultimo punto:se implementato correttamente, il fuso orario del tuo server non dovrebbe avere importanza. Confronta UTC con UTC.