ugrás a tartalomhoz

Időzóna átváltás

Castor87 · 2010. Aug. 3. (K), 19.45
Sziasztok,

Ez alapján

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_convert-tz

a helyi idő szerint eltárolt dátumokat tetszőleges időzónában lehet kiolvasni. Az a problémám vele, hogy mivel most nyári időszámítás van, ezért 1órával kevesebbet ír.
A lenti példa utolsó paraméteréhez hogyan lehetne úgy hozzáadni még egy órát, hogy negatív szám esetén is jól működjön? Próbálkoztam strtotime('+1 hour',...) és hasonlókkal de nem nagyon működtek.
SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00')
 
1

UTC timestamp?

janoszen · 2010. Aug. 3. (K), 21.11
Miért nem tárolsz UTC timestampet? Az biztosan nem változik, számolni is tudsz vele és a megjelenítéshez meg olyan timezonera konvertálod, amire akarod.
2

Nem a tárolással van a gond,

Castor87 · 2010. Aug. 4. (Sze), 05.31
Nem a tárolással van a gond, mert át is lehet alakítani ha előbbre vinne. Itt a fő probléma most az, hogy budapesti idő esetén "+01:00" értéket adok hozzá, de az ugye kevés nyári időszámítás idején. Na most a date("I")-vel meg tudom vizsgálni, hogy nyári időszámítás van-e jelenleg, de akkor egy bonyolult függvény kellene ahhoz, hogy a beállítani kívánt időzónához(-05:00 vagy +03:00 stb) hozzáadjon +1órát.

Úgy tűnik ez jó megoldás lesz:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
(http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html)

Csak azt nem értem, miért kell kézzel feltölteni az időzóna táblákat, miért nem tudja ezt magától. Innentől kezdve, nem az eltolás értékét(+01:00) kell megadni, hanem a város nevét(Europe/Budapest). Így helyes időt ír nyáron is.
3

Tárolás

janoszen · 2010. Aug. 4. (Sze), 06.50
Azért célszerű UTC-ben tárolni az adatokat, mert akkor nem kell foglalkoznod a számításoknál az időszámítás ugrásnál, a kiírásnál pedig mondjuk a PHP időzóna függvényeivel ki tudod iratni az időpontot akár a felhasználó időzónája szerint és nem futsz bele abba, hogy állandóan át kell konvertálnod.
4

DateTime

Ifju · 2010. Aug. 4. (Sze), 10.21
PHP-ban erre megoldás a unix timestamp-et tárolva, ami mindig UTC, és a DateTime classt használva már könnyedén megkapnád a pontos időket a DateTimeZone-nal kiegészítve, amennyiben a szerveren a megfelelő lokalizációk fenn vannak.

szerk: A'szem még nagyon kora reggel van, mert kissé offtopic lettem. :)