Avatar billede noerrebronx Nybegynder
15. juni 2004 - 15:46 Der er 10 kommentarer og
1 løsning

Hvordan får man timezone af en client

Jeg har et website. I det website har jeg nogle tider (ligger i en excel database) som gerne skal vises i den lokale tid som IE klienten befinder sig i. Indtil videre gemmer jeg alle tidspunkter i GMT/UMT da dette er det nemmeste at regner ud fra. DVS at databasen har kl 12:00 gemt, men på websiden skal der faktisk vises 13:00 fordi vi befinder os i GMT+1. Hvis de loggede sig på fra New York skulle der vises 08:00. Nogle der har nogen ideer?
Avatar billede trumf Nybegynder
16. juni 2004 - 03:25 #1
Dette skulle vist være det du leder efter

<%
DatoTid = request.form("DatoTid")
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Min side </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function SetDatoTid() {
    document.myForm.DatoTid.value = new Date();
    document.myForm.submit();
}
//-->
</SCRIPT>
</HEAD>
<%
If DatoTid = "" Then
%>
<BODY onLoad="SetDatoTid">
<FORM NAME="myForm" METHOD="POST" ACTION="denne_side.asp">
<INPUT TYPE="HIDDEN" NAME="DatoTid" VALUE="">
<FORM>
<%
Else
%>
<BODY>
<%
End If
%>


</BODY>
</HTML>
Avatar billede trumf Nybegynder
16. juni 2004 - 03:40 #2
Ja det var jo både dato og tid men du tager jo bare timen ud af det, og så behøver du vel ikke det med GMT...

klientTime = hour(datoTid)
aktuelTime = hour(now)
Så må det passe med: GMT = klientTime - aktuelTime - 1
Avatar billede noerrebronx Nybegynder
16. juni 2004 - 09:57 #3
Ufff.Jeg kan se mig selv rode mig ind i noget grimt stads her. Nu skal jeg lige pludselig til at runde værdier af og den slags også. Jeg syntes ofta man ser at klient tiden ikke går rigtigt, men er bagud med 5-10 min. Det var derfor jeg blandt andet gerne ville have fat i selve tidszonen.
Avatar billede trumf Nybegynder
16. juni 2004 - 10:59 #4
Jeg har da også vist hvordan du får GMT.
klientTime = hour(datoTid)
aktuelTime = hour(now)
GMT = klientTime - aktuelTime - 1

Men det tager selvfølgelig ikke højde for om klientens ur går lidt forkert.
Du kunne evt udbygge det lidt, hvis du tager klientbrowserens lande ID, og så sammenholde tiden med det.
Dette vil dog ikke holde i de tilfælde hvor browseren er engelsk, og du skal til at lave en DB med alle lande, landeID'er og deres tidszoner...
Det bliver et stort projekt.

Jeg tror ikke der er flere måder at gøre det på, men det betyder jo ikke at der ikke er :-)
Håber du kan bruge dette
Avatar billede trumf Nybegynder
16. juni 2004 - 11:09 #5
Men på den anden side, så er det da ligegyldigt om klientens ur går forkert, hvis bare du selv er sikker på, at serverens tid går rigtigt, for du kan da bare justere tiden så, da minutter skal være ens på alle ure over hele verden...
Avatar billede noerrebronx Nybegynder
16. juni 2004 - 13:17 #6
puha. Det er vist et større projekt end jeg lige havde regnet med. Der er vist ikke nogen nem løsning til det her. Jeg kigger lidt i den stil du har foreslået. Tak
Avatar billede trumf Nybegynder
16. juni 2004 - 16:47 #7
Nej det behøver ikke være så stort. Du kan selv tilpasse så det passer til det du nu synes:

klientTime = hour(datoTid)

klientMinut = Minute(datoTid)
aktuelMinut = Minute(now)
If (Left(klientMinut, 1) = "4" OR Left(klientMinut, 1) = "5") AND (Left(aktuelMinut, 1) = "0" OR Left(aktuelMinut, 1) = "1") Then
  klientTime = klientTime + 1
ElseIf (Left(aktuelMinut, 1) = "5" OR Left(aktuelMinut, 1) = "5") AND (Left(klientMinut, 1) = "0" OR Left(klientMinut, 1) = "0") Then
  klientTime = klientTime - 1
End If
Avatar billede trumf Nybegynder
16. juni 2004 - 16:48 #8
Hov

klientMinut = Minute(datoTid)
aktuelMinut = Minute(now)
If (Left(klientMinut, 1) = "4" OR Left(klientMinut, 1) = "5") AND (Left(aktuelMinut, 1) = "0" OR Left(aktuelMinut, 1) = "1") Then
  klientTime = klientTime + 1
ElseIf (Left(aktuelMinut, 1) = "4" OR Left(aktuelMinut, 1) = "5") AND (Left(klientMinut, 1) = "0" OR Left(klientMinut, 1) = "1") Then
  klientTime = klientTime - 1
End If
Avatar billede trumf Nybegynder
16. juni 2004 - 16:52 #9
Det kunne jo også gøres lidt pænere :-)

klientMinut = Minute(datoTid)
aktuelMinut = Minute(now)
If cInt(klientMinut) < 60 AND cInt(aktuelMinut) > 0 Then
  klientTime = klientTime + 1
ElseIf cInt(aktuelMinut) < 60 AND cInt(klientMinut) > 0 Then
  klientTime = klientTime - 1
End If
Avatar billede trumf Nybegynder
16. juni 2004 - 16:56 #10
og her med mere præcist tidsinterval
If (cInt(klientMinut) < 60 AND cInt(klientMinut) > 40) AND (cInt(aktuelMinut) > 0 AND cInt(aktuelMinut) < 20) Then
  klientTime = klientTime + 1
ElseIf (cInt(aktuelMinut) < 60 AND cInt(aktuelMinut) > 40) AND (cInt(klientMinut) > 0 AND cInt(klientMinut) < 20) Then
  klientTime = klientTime - 1
End If
Avatar billede noerrebronx Nybegynder
16. juni 2004 - 18:36 #11
thanks
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester