Autor Zpráva
bballer
Profil
Neznáte někdo nějakou jednoduchou funkci, jak zjistit časové pásmo uživatele?

Potřeboval bych přepočítávat čas článků. Tj. čas uživatele - čas serveru a vyplivnout uživateli přepočtený čas podle toho kde se zrovna nachází. Zatím to řeším tak, že článek vyšel před 3h apod. Ale uvést konkrétní čas v daném časovém pásmu by nebylo špatné. Ale nechci se pouštět do řešení, aby si uživatel zadával časové pásmo kde zrovna je a podobné složitosti, nehledě že to pak při letním/zimním času zlobí. Uživatele to otravuje a ne vždy to nastaví správně.

Na internetu jsem hledal a nacházím jen krkolomné věci. Ale určitě to musí jít jednoduše v PHP 5, PHP 7. Viz třeba zjistit jazyk uživatele z prohlížeče funkcí Locale. Jednoduché a rychlé, než to řešit přes nějaký seznam IP adres apod, jak jsem se na internetu taky dočetl, nedělám web kde to musí být na milimetry přesně, ale aby to obecně víceméně sedělo...
midlan
Profil
Pokud bych to dělal já, moje řešení by bylo: jednou za čas (například hodinu) bych si nechal od uživatele poslat JavaScriptem (ajaxem) jeho čas na server, tam si uložil rozdíl od serverového času a podle toho mu čas příspěvků vypočítávat. Případně rozdíl zaokrouhlit na celé hodiny (uhodnout časové pásmo).

Pokud se dá spolehnout na to, že uživatel má na svém počítači čas nastavený správně a to samé platí pro server, bude toto řešení velmi robustní a přesné. A IMHO i jednoduché.
M02
Profil *
Klient informaci o svém čase serveru neposílá, jediný nekrkolomný způsob je tedy vypisovat čas v nějakém univerzálním tvaru a korekci provést až JavaScriptem.

GeoIP bych ale taky nezatracoval, stačí ti lokalizovat stát, na což stačí ta nejmenší databáze adres a budeš dosahovat velmi dobré přesnosti. Navíc databáze GeoLite už časové zóny u adres, mám dojem, už přímo obsahuje.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: