[ metvsmet @ 31.05.2009. 14:43 ] @
Pozdrav svima,

ovako, mene interesuje sledece,
imam tabelu users gde se nalaze informacije o korisnicima, njihova lozinka, korisnicko ime, zemlja, itd, i datum registracije i datum i vreme poslednje posete, e sad, mene zanima vremenska zona, kako da nekome u drugoj vremenskoj zoni prikazem datum i vreme u njegovoj vremenskoj zoni, tj, zelim da pri registraciji da stavim da korisnik izabere u kojoj je vremenskoj zoni i da na primer ako napravim/imam forum da se njemu prikazuje datum i vreme u njegovoj vremenskoj zoni.
Da li moze nesto tipa ovako, da se informacije koje se unose u MySql bazu budu u jednoj vremenskoj zoni a da korisnik zavisno od njegove vremenske zone da dobije informacije kada poseti odredjenu stranu u njegovoj vremenskoj zoni.
Trazio sam na netu neke primere ali nisam uspeo, pronasao sam nesto ali nisam shvatio kako da to upotrebim, znaci ne treba mi nista komplikovano, vec samo da prikazem ljudima u razlicitim vremenskim zonama kako treba datum i vreme ...

Hvala na pomoci
[ Nikola Poša @ 31.05.2009. 14:54 ] @
Prouči ovu MySQL f-ju, mislim da je to što tebi treba...

U tom upitu, pri dohvatanju post-ova, ili čega već, bi samo trebao da dodaš i poziv te f-je za datum koji dohvataš, npr.:
Code:
SELECT p.author, p.text, CONVERT_TZ(p.datetime, '+00:00', u.timezone)
FROM posts p, users u
WHERE u.username = '$username'

To $username bi bila recimo neka promenljiva iz sesije, koja definiše trenutno prijavljenog korisnika, al' to je samo prost primer, čisto da vidiš kako se koristi CONVERT_TZ(). Taj drugi argument u pozivu te f-je je trenutna (default) vremenska zona...
[ metvsmet @ 31.05.2009. 15:07 ] @
Citat:
Nikola Poša: Prouči ovu MySQL f-ju, mislim da je to što tebi treba...

U tom upitu, pri dohvatanju post-ova, ili čega već, bi samo trebao da dodaš i poziv te f-je za datum koji dohvataš, npr.:
Code:
SELECT p.author, p.text, CONVERT_TZ(p.datetime, '+00:00', u.timezone)
FROM posts p, users u
WHERE u.username = '$username'

To $username bi bila recimo neka promenljiva iz sesije, koja definiše trenutno prijavljenog korisnika, al' to je samo prost primer, čisto da vidiš kako se koristi CONVERT_TZ(). Taj drugi argument u pozivu te f-je je trenutna (default) vremenska zona...


aha, e to sam trazio, funkciju za konvertovanje iz jedne u drugu vremensku zonu, hvala, pomoglo je.
[ metvsmet @ 31.05.2009. 15:11 ] @
cek, sad sam malo zbunjen, zbunjem sam jer sam sad ukucao CONVERT_TZ u pretragu u online dokumentaciji na php sajtu i nista nije pronasao, kao da ta funkcija ne postoji.

----

sad sam probao sledece da napisem u php fajlu:
echo convert_tz('2007-10-28 23:00:00', '-5:00', '+0:00');
kao primer, da isprobam
i dobio sam samo ovo:
Fatal error: Call to undefined function convert_tz() in ...

[Ovu poruku je menjao metvsmet dana 31.05.2009. u 16:30 GMT+1]
[ Nikola Poša @ 31.05.2009. 15:29 ] @
Ne PHP, MySQL f-ja. Dao sam ti i link do te f-je u mojoj poruci...
[ metvsmet @ 31.05.2009. 15:32 ] @
Citat:
Nikola Poša: Ne PHP, MySQL f-ja. :) Dao sam ti i link do te f-je u mojoj poruci...


aha, sorry, tek sad sam video da si napisao MySql funkcija, ali zbog cega ja ne mogu da koristim tu funkciju, koristim XAMPP, i pozvao ja tu funkciju i izbacuje mi da ta funkcija ne postoji.
[ Nikola Poša @ 31.05.2009. 15:37 ] @
A koju verziju MySQL-a imaš?
[ Nikola Poša @ 31.05.2009. 15:39 ] @
btw Imaš i PHP-ovu f-ju date_default_timezone_set...
[ metvsmet @ 31.05.2009. 15:43 ] @
ovo mi izbacuje kada stavim phpinfo() funkciju:
Client API version 5.1.30

koliko ja vidim ovo zavisi od MySql verzije, u ako verzija nije odgovarajuca onda treba neka podesavanja, tj, da se ubacuju neke tabele, to sam video na ono stranici koju si mi dao. To mi je malo komplikovano, jer, ta podesavanja ja mozda budem mogao da uradim na svom racunaru, ali kada skriptu prebacim ja neki hosting, ja nemam pristup tome sto treba da uradim, znaci, to zavisi od hostinga koji izaberem.

-------
aha, sad cu pogledati tu php funkciju, hvala
[ Nikola Poša @ 31.05.2009. 15:45 ] @
Onda jednostavno koristi date_default_timezone_set kao alternativu...
[ metvsmet @ 31.05.2009. 17:45 ] @
ovo sa vremenskim zonama mi mnogo komplikovano, nisam shvatio kako da uradim to sto hocu.
odlucio sam sa sledecim kodom da idem:
Code:
$server_date = date("Y-m-d H:i:s");
$timezone_offset = +1; // korisnikova vremenska zona
$date = date("Y-m-d H:i:s", strtotime($server_date . " +" . $timezone_offset . " hours"));
echo $date;


e sad, mene zanima samo sledece:
posto mi je trenutno na hosting-u podesena +2 vremenska zona, kako da ja promenim da bude 0, tj, da li moze da to ide nesto preko php.ini fajla, da ja upisem tu da hocu da mi vremenska zona servera bude 0 i da ja taj php.ini fajl stavim u root direktorijum.
Trenutno kad stavim funkciju date('r',time()); server mi izbacuje Sun, 31 May 2009 18:43:03 +0200, ali ja hocu da mi zona bude 0.
[ Nikola Poša @ 31.05.2009. 17:55 ] @
A ja tu opet ne vidim da si koristio f-ju date_default_timezone_set...

Probaj da dodaš i ovo:
Code:
date_default_timezone_set("Europe/Belgrade");

Ili ovako:
Code:
date_default_timezone_set('UTC');

A možeš i UTC+1, UTC+2, itd.
[ metvsmet @ 31.05.2009. 18:08 ] @
al' problem je to sto nisam shvatio kako da izvucem datum iz baze i da prikazem u odredjenoj vremenskoj zoni ...
zato sam pitao za ovu prethodnu funkciju koju sma napisao, jer mi je mnogo jednostavna ta funkcija ...
samo ne znam kako da podesim da mi server bude u 0 vremenskoj zoni.
[ Nikola Poša @ 31.05.2009. 18:35 ] @
Citat:
metvsmet: al' problem je to sto nisam shvatio kako da izvucem datum iz baze i da prikazem u odredjenoj vremenskoj zoni ...

Code:

//dohvatanje datuma iz baze

date_default_timezone_set("Europe/Belgrade"); // +2 sata

$date = $datum_vreme_iz_baze;
   
echo date('H:i:s', strtotime($date)); //Ispis vremena (trebalo bi da bude dva sata vise od onog iz baze)

Nadam se da je to sad jasno...

Citat:
metvsmet: samo ne znam kako da podesim da mi server bude u 0 vremenskoj zoni.

Ako baš hoćeš, možeš da uradiš ini_set za vremensku zonu, mada je to isto kao i korišćenje date_default_timezone_set, ovako:
Code:

ini_set('date.timezone', 'UTC');
[ metvsmet @ 31.05.2009. 18:49 ] @
ok, hvala za oba primera, probacu ...
[ metvsmet @ 31.05.2009. 19:33 ] @
probao sam ovo:
Code:
<?php
date_default_timezone_set("Europe/Moscow");
$date = "20:25:48"; // string iz baze
echo date('H:i:s', strtotime($date));
?>

i dobijem ovo:
20:25:48

i probao sam ovo:
Code:
<?php
date_default_timezone_set("Europe/Zaporozhye");
$date = "20:25:48"; // string iz baze
echo date('H:i:s', strtotime($date));
?>

i dobijem ovo:
20:25:48

i probao sam ovo:
Code:
<?php
date_default_timezone_set("Europe/Belgrade");
$date = "20:25:48"; // string iz baze
echo date('H:i:s', strtotime($date));
?>

i dobijem ovo:
20:25:48

sto znaci, izlaz mi se ne menja, tj, vreme je uvek isto, kao da i nista nisam ni uradio.
[ metvsmet @ 31.05.2009. 19:52 ] @
pronasao sam ovu funkciju:

Code:
putenv('TZ=Europe/Belgrade');
mktime(0,0,0,1,1,1970);
echo date("Y-m-d H:i:s");
[ Nikola Poša @ 31.05.2009. 19:59 ] @
Probaj i ovako:
Code:

$time = '20:25:48'; 
    
$dateTime = new DateTime($time);
$dateTime->setTimeZone(new DateTimeZone("Europe/Moscow"));
echo $dateTime->format('H:i:s');

DateTime je PHP ugrađena klasa...
[ metvsmet @ 31.05.2009. 20:05 ] @
Citat:
Nikola Poša: Probaj i ovako:
Code:

$time = '20:25:48'; 

$dateTime = new DateTime($time);
$dateTime->setTimeZone(new DateTimeZone("Europe/Moscow"));
echo $dateTime->format('H:i:s');

DateTime je PHP ugrađena klasa...


e to, hvala na ovome, sad razumem sta i kako treba da uradim ... tnx
[ Nikola Poša @ 31.05.2009. 20:19 ] @
Ovako je još pravilinije:
Code:

$time = '20:25:48';
echo $time . '<br />'; 
    
$dateTime = new DateTime($time, new DateTimeZone(date_default_timezone_get()));
$dateTime->setTimeZone(new DateTimeZone('Europe/Moscow'));
echo $dateTime->format('H:i:s'); //ispisuje 00:25:48 (+ 4 sata)

Prosleđivanjem drugog argumenta konstruktoru DateTime inicijalizuješ vremensku zonu. Tu možeš da staviš npr. i 'GMT' (Greenwich Mean Time). To je ono što je falilo u ovom prvom primeru kojeg sam poslao...
[ metvsmet @ 31.05.2009. 21:14 ] @
ok, tnx, sad cu malo da se igram sa ovim, da ugradim u moju skriptu pa da vidim dal' sve funkcionise kako treba.