webForumDet fria alternativet

Date() och tidszone?

5 svar · 475 visningar · startad av UrMe

UrMeMedlem sedan apr. 2001762 inlägg
#1

Kör detta script nu i en flashfil:

onEnterFrame = function () {
	myTime = new Date();
	nMonth = months[myTime.getMonth()-1]
	nDate = myTime.getDate()
	displayDate = nDate+" "+nMonth;	
	nSeconds = myTime.getSeconds();
	nMinutes = myTime.getMinutes();
	nHours = myTime.getHours();
	if (length(nMinutes) == 1) {
		nMinutes = "0"+nMinutes;
	}
	if (length(nSeconds) == 1) {
		nSeconds = "0"+nSeconds;
	}
	nTime = displayDate+", "+nHours+":"+nMinutes;
}

Går det att ställa in vilken tidszone man ska köra på? T.ex ska det alltid vara CET, även om man befinner sig i USA så ska tiden visa CET.

Någon som har en lösning på det?

BlixtsystemsMedlem sedan maj 2005704 inlägg
#2

Du har ju date.getTimezoneOffset så du kan räkna ut en central tid.
Dock skulle jag hellre göra ett anrop till ett skript på servern och hämta tiden därifrån om du vill ha en central tid istället för tid på klientdatorn.

UrMeMedlem sedan apr. 2001762 inlägg
#3

Men eftersom denna tickar hela tiden så måste man anropa servern varje sekund då? Nu syns inte sekunderna i detta script, men det ska även gå att visa sekunder på klockan.

UrMeMedlem sedan apr. 2001762 inlägg
#4

Detta bör väl fungera?

 onEnterFrame = function () {
    myTime = new Date();
    //Tidszone fix
    var currentTime = myTime.getTime();
    currentTime = currentTime + ((myTime.getTimezoneOffset() + 60)*60000);
    myTime = new Date(currentTime);
    
    nMonth = months[myTime.getMonth()-1]
    nDate = myTime.getDate()
    displayDate = nDate+" "+nMonth;    
    nSeconds = myTime.getSeconds();
    nMinutes = myTime.getMinutes();
    nHours = myTime.getHours();
    if (length(nMinutes) == 1) {
        nMinutes = "0"+nMinutes;
    }
    if (length(nSeconds) == 1) {
        nSeconds = "0"+nSeconds;
    }
    nTime = displayDate+", "+nHours+":"+nMinutes;
}
BlixtsystemsMedlem sedan maj 2005704 inlägg
#5

UrMe skrev:

Men eftersom denna tickar hela tiden så måste man anropa servern varje sekund då? Nu syns inte sekunderna i detta script, men det ska även gå att visa sekunder på klockan.

Det har du rätt i...jag kollade inte skriptet så noga.
Iofs kan man räkna tid sedan applikationen öppnades som man sedan lägger till på den tid man får vid ett anrop då applikationen öppnas.

Det hela beror på hur viktigt det blir korrekt...jag har för mig att det var något strul med getTimezoneOffset...tror det var att det inte alltid stämde med sommartid. Och folk kan ju ha tiden fel inställd på sin dator. Så vill du ha en gemensam punkt att räkna tiden ifrån som du kan lita på så är det helt klart lämpligast att förlita sig på servern.

UrMeMedlem sedan apr. 2001762 inlägg
#6

Tackar, gjorde en sådan lösning att den hämtar tiden en gång från servern i början sedan tickar jag en timer i flash som lägger på tid varje frame.

Den tidigare lösningen med getTimezoneOffset() var inte speciellt tillförlitlig.

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)