ugrás a tartalomhoz

Időzóna ellenőrzése PHP / Java / MySQL

sunder · 2008. Ápr. 13. (V), 12.38
Szép napot!

Támadt egy kis problémám a címben említett témában.

Adott egy intranetes oldal amit globálisan használnak a felhasználók.
Regisztrációnál meg kell adják, hogy mely időzónában vannak, és ezt a gép menti a useradatokhoz SQLbe, a szerver időzónájához képesti különbséggel együtt.

Egy példa:
A szerver GMT+1, a felhasználó GMT-7, akkor a különbség -8 óra lesz, ez kerül mentésre.

Azonban a különböző időzóna-átállások miatt kellene egy ellenőrző-script. ami összehaonlítja a VÁRT értéket a TÉNYLEGES értékkel, és figyelmezteti a usert, ha nem stimmel valami.

A szerveridő bekérése PHP, módosítva a user időzónájával, a user PC-jéről bekért idő pedig Javascript lenne.

A probléma a következő:
teszem azt a user Denverben tartózkodik, 8 órával mögöttünk.

<?php

$diff = "-8"; //  A user idozonaja es a szerver kozotti kulonbseg oraban, alapvetoen MySQL-bol jon
$modtime = $diff * 3600; // Masodpercce alakitas

$currentime = time(); // Szerver idejenek bekerese timestamp-kent

$usertime = $currenttime + $modtime; // User vart idejenek timestampje
 

$dispusertime = NormalTimeFuncHUMAN($usertime);
// a NormalTimeFuncHUMAN függvény visszadja a timestamp-et éééé-HHH-nn óó:pp formában.
// Példa: 2008-Apr-12 11:58  

?>



Most tehát megvan a user ELVÁRT ideje a szerver irányából.

Következő lépésként megvizsgáljuk a usert
var d = new Date();

És itt a gond!!!
Amennyiben
UserYear = d.getFullYear();

irányban bekérem a d-ből a dolgokat, az a user ideje szerint jön le, de egyszerűen lehetetlen ezt timestamp-pé alakítani.

Akármelyik eljárással próbálkozom (pl. parse(); ), az a SZERVER idejének timestampjét adja vissza, HIÁBA adom meg a parse-nak a user idejét stringként!

Így azonban nem megy a dolog.
Persze a két string-et össze tudnám vetni, de szeretnék egy 180 másodperces tűrést hagyni az elvárt idő és a user idő között, ami timestampek használata nélkül macerás...
Mert mi történik ugye, ha az elvárt idő
2008-Apr-11 14:01
User ideje pedig:
2008-Apr-11 13:59 ...


Szóval ebben a témában szeretnék bármilyen hasznos tanácsot, ötletet, felvetést kérni.

Előre is köszönöm!
 
1

Leírnád...

Velias9 · 2008. Ápr. 14. (H), 16.01
..., hogy pontosan miért nem lehet időbélyeggé alakítani az adatot?
Nem tudom, hogy mire jó a 'parse()', de ha én 'JavaScript'-ben egy szöveget, aminek az eleje (vagy az egész) szám ('string'-ként) számmá akarok alakítani, akkor én a 'parseInt()' függvényt használom.
Én 'JavaScript'-tel valahogy így csinálnám (ezzel a függvénnyel):

...

function adjKulonbseget()
{
	var d = new Date();
	var oraKulonbseg = (d.getTimezoneOffset() / 60);
	return oraKulonbseg;
}

...
Ezzel megvan, hogy mennyi a különbség 'GTM 0'-hoz képest, innen 'AJAX'-szal vagy sima űrlappal felküldöd és már minden OK, ha jól értem a gondot.