Casova pasma a prace s casem JS

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
saimons
Člen | 293
+
0
-

Chtel bych se zeptat jestli nekdo ma nake prakticke zkusenosti s praci s casem ve vice casovych pasmech. Jedna se o projekt podobny aukci ve vice casovych pasmech, takze vlastne jde o to zobrazovat spravny cas pomoci JS, ktery bude synchornizovany se serverovym casem a do toho jeste ty ruzna pasma. Zjistil jsem ze mam v podstate dve moznosti, nechat uzivatele vybrat pasmo pri registraci nebo zjistovat pomoci JS ci IP. Priklanim se k verzi pri registraci, kvuli spolehlivosti. Co me nejvice zajima:

  • jak pracovat s casem z DB, prevadet ho do spravnych pasem a zobrazovat
  • jakym zpusobem uchovavat a ziskavat tyto informace od klienta (prenaset to pomoci cookies nebo to resit serverove pomoci \Nette\Security\User)
  • jak nejlepe synchornizovat cas JS se serverem (pro odpocet), premyslel jsem o AJAXu

Diky za kazdou radu.

Editoval saimons (9. 3. 2012 13:29)

radas
Člen | 225
+
0
-

V MySQL by mělo jít nastavit časovou zónu pomocí

SET timezone = timezonename
srigi
Nette Blogger | 558
+
0
-

Cas ukladaj vzdy ako timestamp. V kazdom momente je timestamp rovnaky pre kazde miesto na zemeguli. Tj. ked bol timestamp 0, tak bol 0 na celom svete, len v Londyne to znamenalo 1.1.1970 00:00:00. U nas v tedy bolo 1.1.1970 01:00:00.

saimons
Člen | 293
+
0
-

Takze jestli to dobre chapu tak pri kazdem vkladani do DB budu muset udelat toto:

$date = new DateTime("now", new DateTimeZone('Europe/Warsaw'));
$date->getTimestamp();

pořpípadě nastavit SET timezone = timezonename a pouzit NOW(). A pak pri vypise mi \Nette\Database vlaste vrati DataTime tak ja udelam:

$dateTimeZone = new DateTimeZone('Europe/Prague');
$dateTime->setTimezone($dateTimeZone);

Protoze ja vlastne ten cas potrebuju vypsat posunuty. Pisu to spravne, nak si tim nejsem jisty?

Editoval saimons (9. 3. 2012 17:36)