Avatar billede thomas_b Nybegynder
27. maj 2006 - 00:15 Der er 29 kommentarer og
2 løsninger

Lave et simpelt + script ?

Hej Eksperter..

Har dette UR-script...
Lige nu står det stille... Men tænkte på om man ikke kunne lave det så ur'et gik...

<script type="text/javascript">
function startTime()
{
var h="<%=Hour(Now())%>"
var m="<%=Minute(Now())%>"
var s="<%=Second(Now())%>"

m=checkTime(m)
s=checkTime(s)
document.getElementById('txt').innerHTML=h+":"+m+":"+s
t=setTimeout('startTime()',500)
}

function checkTime(i)
{
if (i<10)
  {i="0" + i}
  return i
}
  window.onload = startTime;
</script>


For dig der er haj til JS og ikke til asp så er dette <%=Hour(Now())%>" og de andre, input til ur'et som ur'et skal gå efter... Det kommer med rene tal (fx. 22)

Tænkte på om man ikke kunne lave et script der tog de indkommende input og bare lagde til det... i takt med at det skiftede som et alm. ur....?
Avatar billede loevgaard Praktikant
27. maj 2006 - 00:27 #1
Hvis du vil lave et ur på en hjemmeside, så er det faktisk smartere at lave det vha. JS og ikke ASP, da ASP vil tage uret fra serveren, mens JS vil tage uret fra klienten, som jo nok er det brugeren har brug for at vide..
Efter en søgning på "javascript clock" på google: http://www.javascript-page.com/clock.html
Avatar billede thomas_b Nybegynder
27. maj 2006 - 00:31 #2
I dette tilfælde har jeg brug for at vise brugern servertiden... og på min pc og server er der en tidsforskæl på ca. 8 min. og 28 sek.

Kan du programmere JS ?
Avatar billede psykochicken Nybegynder
27. maj 2006 - 01:34 #3
absolut utestet bud:

//du har lokaltiden:
var time=new Date();
var lh=time.getHours();
var lm=time.getMinutes();
var ls=time.getSeconds();
//og servertiden:
var h="<%=Hour(Now())%>"
var m=.....osv

find forskellen mellem servertid og lokaltid:
hafvigelse = parseInt(lh - h);
mafvigelse = ...
safvigelse = ...

hvis du så lægger lokaltiden sammen med afvigelsen burde du få en tid, der svarer til servertiden - altså noget i stil med:
document.getElementById('txt').innerHTML=parseInt(lh + hafvigelse) + ":" + parseInt(lm + mafvigelse) + ":" + parseInt(ls + safvigelse);

/psc
Avatar billede thomas_b Nybegynder
27. maj 2006 - 01:35 #4
Jeg er ikke så vildt god til JS...
Hvordan kunne det samlede script se ud i JS ?
Avatar billede thomas_b Nybegynder
27. maj 2006 - 16:02 #5
Nu ser mit script sådan ud... Tiden bliver vist... men den går ikke...!

<script type="text/javascript">
function startTime()
{

//du har lokaltiden:
var time=new Date();
var lh=time.getHours();
var lm=time.getMinutes();
var ls=time.getSeconds();
//og servertiden:
var hie="<%=Hour(Now())%>"
var mie="<%=Minute(Now())%>"
var sie="<%=Second(Now())%>"


hafvigelse = parseInt(hie - lh);
mafvigelse = parseInt(mie - lm);
safvigelse = parseInt(sie - ls);


var h = parseInt(lh + hafvigelse);
var m = parseInt(lm + mafvigelse);
var s = parseInt(ls + safvigelse);
// add a zero in front of numbers<10
m=checkTime(m)
s=checkTime(s)
document.getElementById('txt').innerHTML=h+":"+m+":"+s
t=setTimeout('startTime()',500)
}

function checkTime(i)
{
if (i<10)
  {i="0" + i}
  return i
}
  window.onload = startTime;
</script>
Avatar billede psykochicken Nybegynder
28. maj 2006 - 09:49 #6
argh jeg tog fejl - sådan kan man jo ikke regne....
afvigelsen skal beregnes med:
new Date().getTime() - <% servertiden i tilsvarende format.. %>;//tid siden 1/1-1970 i millisekunder.

jeg skal prøve at finde den til dig senere i dag ;o)

/psc
Avatar billede plazm Nybegynder
28. maj 2006 - 09:57 #7
http://mijav.dk/index.php

Kik lidt længere nede, der er et script, der gør det du ønsker
Avatar billede psykochicken Nybegynder
28. maj 2006 - 17:18 #8
Dette burde virke:
<script type="text/JavaScript">
var stime = "<%@language='JScript'%><%=(new Date()).valueOf()%>"; //servertid
var ltime = new Date().getTime(); //lokaltid
var afvigelse = stime - ltime;

function startTime() {
  var now = new Date();
  var newtime = new Date(now.getTime()+afvigelse);

  h = newtime.getHours();
  m = newtime.getMinutes();
  s = newtime.getSeconds();
 
  if(h<10) h = "0" + h;
  if(m<10) m = "0" + m;
  if(s<10) s = "0" + s;

  document.getElementById("txt").firstChild.nodeValue = h + ":" + m + ":" + s;

  setTimeout("startTime()",1000);
}

window.onload = startTime;
</script>

/psc
Avatar billede thomas_b Nybegynder
28. maj 2006 - 18:25 #9
psykochicken -> Den virker ikke...
Siger...: The @ command must be the first command within the Active Server Page.

Og hvis jeg fjerner @'et siger den...:
language='JScript'
---------^

På samme linie...
Avatar billede psykochicken Nybegynder
28. maj 2006 - 21:24 #10
Det virker her: http://myplayhouse.dk/servertid.asp ....men der er "@language...også den første kommando.

/psc
Avatar billede thomas_b Nybegynder
28. maj 2006 - 22:06 #11
Den virker også fint, når jeg kommer den i et dokument for den selv...
Avatar billede thomas_b Nybegynder
28. maj 2006 - 22:24 #12
Jeg har prøvet at sætte javascriptet først på siden...
Så kommer den med en anden fejl....:

Microsoft JScript compilation error '800a03ec'

Expected ';'

Henvisningen/fejlen kommer på en include side med indholdet...:

Response.Expires = 0
Response.Expiresabsolute = DateAdd("d", -2, Now())
--->Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "private"
Avatar billede olebole Juniormester
28. maj 2006 - 22:59 #13
<ole>

Virker dette ikke:

<script language="jscript" runat="server">
    var myTime = new Date().valueOf();
</script>

<script type="text/JavaScript">
    var stime = "<%=myTime%>"; //servertid
</script>

/mvh
</bole>
Avatar billede thomas_b Nybegynder
28. maj 2006 - 23:07 #14
Olebole -> Har jeg ikke ret i at hvis man ændre den til new Date().valueOf();  så kommer den med lokaltiden 2 gange, og derved en afvigelse på 0 ?
Det er hvert fald det min PC giver mig...
Avatar billede olebole Juniormester
28. maj 2006 - 23:13 #15
Om, du har ret, kommer anpå, hvad du mener ... jeg forstår ikke spørgsmålet  :)
Avatar billede olebole Juniormester
28. maj 2006 - 23:14 #16
I mit eksempel burde du få et timestamp ... msec siden 1/1 1970 kl 00:00
Avatar billede thomas_b Nybegynder
28. maj 2006 - 23:16 #17
Jeg forstår ikke dette: (1/1 1970 kl 00:00)
Jeg ved bare at stime skal være min servertid dvs. <%=date()%>
Avatar billede olebole Juniormester
28. maj 2006 - 23:17 #18
- som det lige præcis er  ;o)
Avatar billede olebole Juniormester
28. maj 2006 - 23:18 #19
Du kan evt. skrive:

var stime = new Date(<%=myTime%>); //servertid
Avatar billede olebole Juniormester
28. maj 2006 - 23:19 #20
Det kommer helt anpå, hvordan du vil bruge det  :)
Avatar billede thomas_b Nybegynder
28. maj 2006 - 23:19 #21
Jeg har lavet en test på scriptet som ser sådan ud...:
document.getElementById("txt").firstChild.nodeValue = h + ":" + m + ":" + s + "avige:" + afvigelse

Værdien jeg trækker ud fra afvigelsen er : 0
Avatar billede olebole Juniormester
28. maj 2006 - 23:21 #22
Jeg ved ikke helt, hvad du bruger af kode, så jeg ved ikke, om det er, hvad man kan forvente, der bliver skrevet ud  :)
Avatar billede thomas_b Nybegynder
28. maj 2006 - 23:26 #23
min kode ser således ud, efter din hjælp...:

<script type="text/JavaScript">
var myTime = new Date().valueOf();
var stime = new Date(<%=myTime%>); //servertid
var ltime = new Date().getTime(); //lokaltid
var afvigelse = stime - ltime;

function startTime() {
  var now = new Date();
  var newtime = new Date(now.getTime()+afvigelse);

  h = newtime.getHours();
  m = newtime.getMinutes();
  s = newtime.getSeconds();

  if(h<10) h = "0" + h;
  if(m<10) m = "0" + m;
  if(s<10) s = "0" + s;

  document.getElementById("txt").firstChild.nodeValue = h + ":" + m + ":" + s + ") (avige:" + afvigelse

  setTimeout("startTime()",1000)
}

window.onload = startTime;
</script>
<span id="txt">&nbsp;</span>


Og når den bliver taget fra "vis kilde" ser den således ud...:

<script type="text/JavaScript">
var myTime = new Date().valueOf();
var stime = new Date(); //servertid
var ltime = new Date().getTime(); //lokaltid
var afvigelse = stime - ltime;

function startTime() {
  var now = new Date();
  var newtime = new Date(now.getTime()+afvigelse);

  h = newtime.getHours();
  m = newtime.getMinutes();
  s = newtime.getSeconds();

  if(h<10) h = "0" + h;
  if(m<10) m = "0" + m;
  if(s<10) s = "0" + s;

  document.getElementById("txt").firstChild.nodeValue = h + ":" + m + ":" + s + ") (avige:" + afvigelse

  setTimeout("startTime()",1000)
}

window.onload = startTime;
</script>
<span id="txt">&nbsp;</span>
Avatar billede olebole Juniormester
28. maj 2006 - 23:47 #24
Jeg har ikke en IIS oppe at køre, så jeg kan ikke teste, men hvad returnerer dette:

<script language="jscript" runat="server">
    var myTime = new Date().valueOf();
    Response.Write(myTime);
</script>
Avatar billede psykochicken Nybegynder
30. maj 2006 - 21:38 #25
hmm...jeg ved ikke om det kan være så simpelt, men hvordan virker dette:

<script type="text/JavaScript">
var stime = new Date("<%= Now() %>").getTime(); //servertid
var ltime = new Date().getTime(); //lokaltid
var afvigelse = stime - ltime;

function startTime() {
  var now = new Date();
  var newtime = new Date(now.getTime()+afvigelse);

  h = newtime.getHours();
  m = newtime.getMinutes();
  s = newtime.getSeconds();
 
  if(h<10) h = "0" + h;
  if(m<10) m = "0" + m;
  if(s<10) s = "0" + s;

  document.getElementById("txt").firstChild.nodeValue = h + ":" + m + ":" + s;
  document.getElementById("local").firstChild.nodeValue = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();

  setTimeout("startTime()",1000);
}

window.onload = startTime;
</script>
Servertid:<div id="txt">&nbsp;</div><br>
Lokaltid:<div id="local">&nbsp;</div>

ex: http://myplayhouse.dk/servertid2.asp
Hvis du får samme tid, så prøv at stille lokaltiden 1 time frem.

/psc
Avatar billede thomas_b Nybegynder
30. maj 2006 - 21:43 #26
Det virkede med olebole's script.. det er det jeg har brugt...! Ellers mange tak...

Vil i dele point ?
Avatar billede olebole Juniormester
30. maj 2006 - 23:48 #27
Den er jeg helt med på  ;o)
Avatar billede thomas_b Nybegynder
30. maj 2006 - 23:53 #28
Så skal vi bare have psykochicken med...
Avatar billede psykochicken Nybegynder
31. maj 2006 - 00:29 #29
fino - og takker ;o)
Avatar billede thomas_b Nybegynder
31. maj 2006 - 14:27 #30
Versgo' og 1000 tak for hjælpen fra jer begge...
Avatar billede olebole Juniormester
31. maj 2006 - 14:45 #31
Selvtak - og tak for points  :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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