Først har jeg skrevet om dette i detaljer før, så læs venligst mine svar her og her , samt dette blogindlæg af Lau Taarnskov .
Med særlig hensyn til MySQL ønsker du generelt ikke at bruge en TIMESTAMP
felt for den lokale tid for en fremtidig hændelse, da den vil konvertere fra sessionens tidszone til UTC på skrivetidspunktet og konvertere tilbage fra UTC til sessionens tidszone på læsetidspunktet. Selvom disse er de samme tidszone-id'er (hvilket de ikke behøver at være), er der ingen garanti for, at tidszonedataene ikke ændres for en eller begge af tidszonerne mellem hvornår du skriver dataene og hvornår begivenheden finder sted.
Brug i stedet en DATETIME
felt, som ikke foretager implicitte tidszonekonverteringer. Du får den nøjagtige værdi ud, som du skrev. Gem det lokale tidspunkt for begivenheden, og gem en VARCHAR
felt, der indeholder tidszone-id'et for hændelsen. Dette er den eneste måde at bevare brugerens oprindelige hensigt på.
Begrundelse og kanttilfælde er alle beskrevet i de svar, jeg gav tidligere.