[ zgas @ 05.09.2007. 14:11 ] @
Posto mi je sajt u americi zeleo sam da belezim u bazi neko univerzalno vreme koje moze da pozove PHP ili Mysql i koje ce uvek biti isto nezavisno od toga gde se server u svetu nalazi. Mislio sam da je to UTC vreme za koje postoje funkcije pozivanja i u PHP-u i u MySQL-u.

Pokusao sam da pozovem to vreme sa PHP-om ovako:
Code:

echo   date("M d Y H:i:s").' ||| '.  date("Z T P O e").'<br>';
echo gmdate("M d Y H:i:s").' ||| '.gmdate("Z T P O e").'<br>';


Medjutim dobio sam potpuno razlicite rezultate za UTC vreme na serveru u americi i na mom racunaru. Kada se ISTOVREMENO izvrse gornja dva koda na oba servera dobijaju se ovi rezultati:

U americi:
Code:

Sep 05 2007 08:22:46 ||| -18000 CDT -05:00 -05:00 America/Chicago
Sep 05 2007 13:22:46 ||| 0 GMT +00:00 +00:00 UTC


Na mom racunaru:
Code:

Sep 05 2007 22:23:13 ||| 7200 CEST +02:00 +02:00 Europe/Paris
Sep 05 2007 20:23:13 ||| 0 GMT +00:00 +00:00 UTC


Znaci nisam dobio neko univerzalno vreme.

Bitno je u pitanju PHP 5.2. i MySQL5

Pitanje je da li da u bazu belezim UTC vreme, pa da to vreme prilagodjavam korisnicima, ili da upisujem vreme Srbije, pa da to vreme prilagodjavam korisnicima?
Cini mi se da je lakse manipulisati sa UTC vremenom jer je to vreme direktno podrzano i php-om i mysql-om. Tako da se to vreme veoma lako moze prilagodjavati korisnicima? Da li sam u pravu? Problem je samo sto ja ne znam kako se dobija neko univerzalno vreme, ne znam u cemu gresim?

---------------------------------------

Takodje mi interesuje, da li neka PHP funkcija moze prepoznati iz koje vremenske zone pristupa korisnik preko browzera? Ako ne, dali postoji neki jednostavan nacin da se omoguci automatsko prepoznavanje vremenske zone korinika i da li se to praktikuje - da li je to sigurno. Ili se treba od svakog korisnika traziti da unese svoju vremensku zonu.

[Ovu poruku je menjao zgas dana 05.09.2007. u 22:26 GMT+1]
[ glavince @ 06.09.2007. 21:44 ] @
Php ne moze da prepozna vremensku zonu klijenta. To mozes da uradis preko javascripta (getTimezoneOffset).
MySql ima posebne procedure za rad sa vremenskim zonama.

Napravi funkciju u php timezone() preko koje ces dobijati tz iz javascripta.

Kada se konektujes na bazu treba da postavis:
mysql_query("SET time_zone = '".timezone()."'");


A query za ispis na linux bi mogao da bude:
sebect bla bla, date_format(CONVERT_TZ(vreme_iz_baze,'+2:00', '".timezone()."'),'%d.%m %H:%i') as tz_vreme_klijenta
// +2:00 je nasa vremenska zona

Na windows je:
sebect bla bla, date_format(CONVERT_TZ(vreme_iz_baze,'EU/Belgrade', '".timezone()."'),'%d.%m %H:%i') as tz_vreme_klijenta
[ zgas @ 07.09.2007. 08:22 ] @
Ostalo je pitanje, koje vreme da upisem u bazu - UTC ili vreme Servera. Buni me to sto UTC vreme nije na hostingu u Americi i na mom racunaru, a ne znam da li gresim - UTC vreme u odredjenom trenutku bi trebalo dabude isto na svim podrucjima.
[ 1r0nM4n @ 07.09.2007. 19:40 ] @
Ako hoćeš da dobiješ naše vreme pozivanjem funkcija za vreme ili datum, ubaci ovo u svoj kôd:
Code:
putenv("TZ=Europe/Belgrade");


p0z
[ stsung @ 08.09.2007. 10:32 ] @
Pozd.

UTC vreme je UTC vreme. To shto ti na tvom rachunaru gmdate() vraca jedno, a na rachunaru u americi neshto drugo, znachi da bilo na tvom rachunaru, bilo na rachunaru u americi, vreme i/ili chasovna zona nije dobro nameshtena. Preporuchujem ti da vremena u bazi uvek chuvash u UTC vremenu.

Svako dobro.
[ zgas @ 08.09.2007. 13:04 ] @
Hvala puno svima i tebi 'srsung'.