Har letat både här och på andra forum utan att hitta något som jag förstår eller som fungerar. Jag är ute efter en "liveklocka" i formatet ex. 17:43:06 som baseras på serverns tid (inte klientens). Några heta tips? Eftersom javascript körs på klienten utan kontakt med servern går inte detta. Det närmsta du kan komma är att ha en vanlig javascriptklocka som initieras av servern när sidan genereras men sedan tickar på av sig själv. Skrev ihop detta nu: OK, ett par små frågetecken. Vad gör SetLocale("en-gb"): ? När jag kör koden som den är så visas rätt tid men datumet blir 9 sept (Thu Sep 9 10:10:30 UTC+0200 2004). Har provat några alternativ men då skriver den bara NaN eller nåt sånt. Kan tillägga att min JavaScript-kunskaper är ganska begränsade. Jag upptäckte att det blev fel, men orkade inte försöka hitta lösningen. Det var för sent på natten. Din första ambition med formatet "Månad dd yyyy hh:mm:ss vore suveränt. Har du eller någon annan tid å lust är jag tacksam. Annars får det bli ett senare problem. Känner att jag inte är man att klara det ännu... Det är i javascripts Date() problemet ligger. Vi måste skapa ett Date-objekt som är initierat serverns tid, och det är formatet på initieringssträngen som var kinkigt. Tjena, jag har inte "tappat tråden", bara haft en ADSL-modemkrash... Ah, när jag testade det så tog jag med både klient- och servertiden för att se om det var någon skillnad.Servertriggad klocka
Sv: Servertriggad klocka
Sv: Servertriggad klocka
<code>
<html>
<head>
<script>
var dateServer = new Date('<% SetLocale("en-gb"): response.write(FormatDateTime(Now)) %>');
var dateStart = new Date();
function tick()
{
var dateNow = new Date();
document.getElementById('clock').value = new Date(dateServer.valueOf() + (dateNow.valueOf() - dateStart.valueOf()));
setTimeout('tick()', 500);
}
</script>
</head>
<body onload="tick()">
<input type="text" id="clock" size="40">
</body>
</code>
Argumentet till Date i tilldelningen av dateServer skall skrivas av servern, typ
<code>
...
var dateServer = new Date('<% response.write(FormatDateTime(Now)) %>');
...
</code>Sv: Servertriggad klocka
Sv: Servertriggad klocka
Tanken var att försöka få en utskrift av servertiden på formatet "September 21, 2003 10:31:17", men det misslyckades. Alternativt kan du skriva ut antalet millisekunder som förflutit sedan den 1 januari 1970.Sv: Servertriggad klocka
Tack ändå!
/DrogenSv: Servertriggad klocka
Enklast är nog att köra med Date(år, månad, dag, timme, minut, sekund):
<code>
...
<script>
var dateClientStart = new Date();
<%
ServerTime = Now
%>
var dateServerStart = new Date(<% Response.Write Year(ServerTime) & ", " & (Month(ServerTime)-1) & ", " & Day(ServerTime) & ", " & Hour(ServerTime) & ", " & Minute(ServerTime) & ", " & Second(ServerTime) %>);
function tick()
{
var dateClient = new Date();
var dateServer = new Date(dateServerStart.valueOf() + (dateClient.valueOf() - dateClientStart.valueOf()));
document.getElementById('client').value = dateClient;
document.getElementById('server').value = dateServer;
setTimeout('tick()', 500);
}
</script>
...
</code>Sv: Servertriggad klocka
Frågan är nu, hur presenterar jag resultatet av denna funktionen? Har provat några alternativ men får oftast: 'Document.GetElementByID(...)' är null eller inte ett objekt.
Novis som man är...
Dessutom vore en visning utan inputfältet en höjdare. Inga dåliga krav man har va´? ;)Sv: Servertriggad klocka
Om du inte är intresserad av klienttiden, kan du ta bort raden
<code>
document.getElementById('client').value = dateClient;
</code>
Där du vill att tiden skall visas kan du göra så här:
<code>
<input type="text" id="server">
</code>
Man kan även använda ett span-element, men då får man ändra litet i javascriptet också:
<code>
<script>
...
document.getElementById('server').innerHTML = dateServer;
...
</script>
<span id="server">Kan tyvärr ej visa servertiden</span>
</code>