Avatar billede drinkit Praktikant
25. november 2003 - 20:48 Der er 33 kommentarer og
2 løsninger

Realtids ur

Hej.
Jeg skal bruge et ur der er "uafhægigt" - det skal IKKE tage klokken fra brugerens, det skal hente klokken fra EN pc så alle ser nøjagtig samme tid. Ved at de kan laves med php, noget med unix stamp eller nåed.. Og mit webhotel ligger hos cliche, regner med det er unix.. Håber i forstår og at i kan hjælpe!!
Avatar billede fangel Nybegynder
25. november 2003 - 20:57 #1
det vil ikke komme til at "gå" - PHP kan kun give et statisk billede !

date("H.i:i \d\e\n j\. \i n \å\r Y");

viser klokken og dato !

Morten
Avatar billede drinkit Praktikant
25. november 2003 - 21:08 #2
http://www.3dchat.dk/chat/time.php - så forklar mig lige at det ur der ikke eksistere :P ?
Avatar billede stalle Nybegynder
25. november 2003 - 21:08 #3
Det du kunne gøre, er at lave en løkke, med en sleep i slutningen for hver loop.
Avatar billede stalle Nybegynder
25. november 2003 - 21:12 #4
Den der "sover" så et minut kunne jeg forestille mig
Avatar billede fangel Nybegynder
25. november 2003 - 21:14 #5
det er også statisk - kig i koden

<meta http-equiv="refresh" content="60">

det opdatere bare sig selv hvert 60ende sek... totalt godt realtime ur !

Morten
Avatar billede roenving Novice
25. november 2003 - 21:19 #6
Hvis du har brug for det sammen med en chat er det jo heller ikke noget problem, for så kan du bare også sende tiden med og opdatere den !-)

Hvis det skal være en mere 'almindelig' side, kunne du jo sende en tidsinformation med fra start og så holde det opdateret med javascript ...
Avatar billede drinkit Praktikant
25. november 2003 - 21:27 #7
dea pg - <meta http-equiv="refresh" content="60"> opdatere bare siden, det betyder ikke at det ikke er realtime ut.. Jeg skal bare have timer:min - og den skal opdateres hvert minut, roenvings bud lyder ikke helt tosset, kan du lave det?
Avatar billede fangel Nybegynder
25. november 2003 - 21:30 #8
date("H:i");

udskriver klokken som du vil have det så - men det er ikke realtime - det er statisk...

Morten
Avatar billede drinkit Praktikant
25. november 2003 - 21:31 #9
ikke det jeg skal bruge .. skal bruge realtime..
Avatar billede roenving Novice
25. november 2003 - 21:35 #10
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ur_alm</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="extend;http://www.eksperten.dk/spm/430220">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function show2(){
if (!document.all&&!document.getElementById)
return
thelement=document.getElementById? document.getElementById("tick2"): document.all.tick2
var Digital=new Date()
var hours=Digital.getHours()
var minutes=Digital.getMinutes()
var seconds=Digital.getSeconds()
var dn=""
if (hours < 24)
dn=""
if (hours > 24)
hours=hours-24
if (hours==0)
hours=24
if (minutes <= 9)
minutes="0"+minutes
if (seconds <= 9)
seconds="0"+seconds
var ctime=hours+":"+minutes+":"+seconds+" "+dn
thelement.innerHTML="<em></em>"+ctime+"<em></em>"
setTimeout("show2()",1000)
}
window.onload=show2;
</script>
</head>
<body>
<span id="tick2"></span>
</body>
</html>

-- denne er lavet til også at tælle sekunder og den tager tiden fra brugerens computer, men begge dele kan maget simpelt laves om:

I stedet for en setTimeout på 1000 skal den være 60000 for at skifte hvert minut (jeg ville nok nærmere vælge 20000 for at tage højde for skæve clocks på computerne !-)

Desuden skal henvisningerne til seconds fjernes andet end i beregningen af tiden ...

Sidst men ikke mindst skal oprettelsen af tiden gøres på grundlag af unixtime:

var Digital=new Date('<%TIMESTAMP%>')
Avatar billede drinkit Praktikant
25. november 2003 - 21:41 #11
<%TIMESTAMP%> - er det php ?
Avatar billede drinkit Praktikant
25. november 2003 - 21:41 #12
var Digital=new Date('<?=$TIMESTAMP?>') Er det ikke næmmere sådan ?
Avatar billede roenving Novice
25. november 2003 - 21:49 #13
-- sikkert, jeg er ik' li'e php'er, så jeg vader tit skævt af de forskellige måder at skrive i server-side script-sprogene ...

-- og du skal så i den variabel have unix-time, altså sekunder siden 1/1-1970 00:00:00
Avatar billede drinkit Praktikant
25. november 2003 - 22:03 #14
hmmm.. ret indviklet, tror du du kan få det lavet til mig :) ??
Avatar billede roenving Novice
25. november 2003 - 22:12 #15
-- den findes også direkte i php som variabel, jeg kan bare ikke huske den ...

-- jeg har kun læst den lille bog fra idg om emnet, aldrig prøvet det !-)

Men ovenstående omskrevet:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ur_alm</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="extend;http://www.eksperten.dk/spm/430220">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function show2(){
if (!document.all&&!document.getElementById)
return
thelement=document.getElementById? document.getElementById("tick2"): document.all.tick2
var Digital=new Date('<?=$TIMESTAMP?>');
var hours=Digital.getHours()
var minutes=Digital.getMinutes()
var dn=""
if (hours < 24)
dn=""
if (hours > 24)
hours=hours-24
if (hours==0)
hours=24
if (minutes <= 9)
minutes="0"+minutes
var ctime=hours+":"+minutes+" "+dn
thelement.innerHTML="<em></em>"+ctime+"<em></em>"
setTimeout("show2()",20000)
}
window.onload=show2;
</script>
</head>
<body>
<span id="tick2"></span>
</body>
</html>

-- og så placerer du bare den span, hvor du vil have den !-)
Avatar billede well_r Nybegynder
25. november 2003 - 22:41 #16
vil man være smart så kunne man få fat i uret på serveren. derefter bruge javascript til at køre :)

noget andet er at man finder serverens ur, og klientens ur.. og derfra trækker dem fra hinanden og finder forskellen.. og derefter ved hjælp af javascript skrive det ud :)
Avatar billede roenving Novice
25. november 2003 - 22:47 #17
Hovsa, ja, det var jo ikke gennemtænkt, for det var faktisk det, som well_r nævner, jeg mente ...

-- og sådan er det bestemt ikke udført !-)
Avatar billede roenving Novice
25. november 2003 - 22:55 #18
Så, nu skulle den være der !-)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ur_alm</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="extend;http://www.eksperten.dk/spm/430220">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var delta = new Date(<?=$TIMESTAMP?>).getTime() - new Date().getTime();

function show2(){
if (!document.all&&!document.getElementById)
return
thelement=document.getElementById? document.getElementById("tick2"): document.all.tick2
var Digital = new Date(new Date().getTime() + delta);
var hours=Digital.getHours()
var minutes=Digital.getMinutes()
var dn=""
if (hours < 24)
dn=""
if (hours > 24)
hours=hours-24
if (hours==0)
hours=24
if (minutes <= 9)
minutes="0"+minutes
var ctime=hours+":"+minutes+" "+dn
thelement.innerHTML="<em></em>"+ctime+"<em></em>"
setTimeout("show2()",20000)
}
window.onload=show2;
</script>
</head>
<body>
<span id="tick2"></span>
</body>
</html>
Avatar billede drinkit Praktikant
26. november 2003 - 14:08 #19
Kunne jeg ikke.. Som well_r siger, hente serverens ur? - det ville være nemmest og smartest ? - Eller hvad ?
Avatar billede drinkit Praktikant
26. november 2003 - 14:12 #20
roenving, dit sidste bud virker ikke.. Det tager klokken fra brugerens pc.. Ikke det den skal, den skal tage klokken fra serveren ! :(
Avatar billede drinkit Praktikant
26. november 2003 - 14:16 #21
jeg skal bare have den til at sige eks:
22:10
Og så bare hente klokken fra serveren - Og så opdatere hvert minut!
Avatar billede roenving Novice
26. november 2003 - 19:08 #22
I min test var den konsekvent 3 minutter og 12 sekunder efter pc'ens ur (fordi jeg indstillede den til et fast tidspunkt, der hvor der står TIMESTAMP !-)

-- det vil garanteret også virke, hvis du kan få den rette væredi ind i stedet for TIMESTAMP ...

-- og jeg kan stadig ikke huske, hvad den funktion hedder i php 1O]
Avatar billede fangel Nybegynder
26. november 2003 - 19:11 #23
den hedder time();

Morten
Avatar billede roenving Novice
26. november 2003 - 19:16 #24
Du kan ikke lave realtidsopdatering fra serveren uden reload af noget, så mit bud går på, at du (som well_r omtaler) starter med at finde en forskel mellem pc'ens aktuelle tid og det, som er blevet overført fra serveren og så konstant ændrer den tid, som pc'en har med forskellen !-)
Avatar billede drinkit Praktikant
26. november 2003 - 19:22 #25
Dvs. at følgende, burde virker som et ur, som IKKE bliver hentet hos brugeren ?


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ur_alm</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="extend;http://www.eksperten.dk/spm/430220">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var delta = new Date(<?echo time();?>).getTime() - new Date().getTime();

function show2(){
if (!document.all&&!document.getElementById)
return
thelement=document.getElementById? document.getElementById("tick2"): document.all.tick2
var Digital = new Date(new Date().getTime() + delta);
var hours=Digital.getHours()
var minutes=Digital.getMinutes()
var dn=""
if (hours < 24)
dn=""
if (hours > 24)
hours=hours-24
if (hours==0)
hours=24
if (minutes <= 9)
minutes="0"+minutes
var ctime=hours+":"+minutes+" "+dn
thelement.innerHTML="<em></em>"+ctime+"<em></em>"
setTimeout("show2()",20000)
}
window.onload=show2;
</script>
</head>
<body>
<span id="tick2"></span>
</body>
</html>
Avatar billede drinkit Praktikant
26. november 2003 - 19:25 #26
http://www.steen-moller.dk/test.php - hmm.. Det er da ikke klokken ?
Avatar billede drinkit Praktikant
26. november 2003 - 19:55 #27
Undskyld, tror i har misforstået mig.. Det skal ikke være uden update.. Bare den viser klokken fra EN computer, og ikke brugerens egen computer, hvis i forstår.. Den skal vise det som klokken er på serveren, og ikke det som klokken er på min egen computer når jeg kigger på siden, eller for den sag skyld når du kigger på siden.. Forstår i ? - Jeg skal bare have udskrevet klokken som klokken er på serveren som min side ligger på!!!!!!
Avatar billede roenving Novice
26. november 2003 - 22:38 #28
Så gør det som de har gjort på 3dchat.dk -- der genloades hele framen med tidsangivelsen jo for hver 60 sekunder !-)

-- og hvis du vil teste det script, du har sat ind i ovenstående test, så sæt f.eks. følgende ind under linjen med var delta = ... :

alert(new Date(<?echo time();?>).toLocaleString());

-- den vil give dig en ide om, hvad der er galt !-)

-- og det gjorde jeg så og fandt ud af, at javascript bruger unix-time i tusindedele sekund, mens time() returnerer i hele sekunder, så prøv:

var delta = <?echo time();?>*1000 - new Date().getTime();
Avatar billede drinkit Praktikant
27. november 2003 - 13:05 #29
Hvordan kan jeg hente min servers klokkeslæt.. det er mit spg.. Længere er den ikke nu :P
Avatar billede fangel Nybegynder
27. november 2003 - 17:16 #30
du for PHP til at udskrive serverens dato/klokke ved at skrive

<?php
echo date("H.i:s n/j-Y");
?>

dette er et statisk print af serverens ur - men ikke realtime, da det jo ikke "tæller"

Morten
Avatar billede drinkit Praktikant
28. november 2003 - 17:59 #31
tak - læg et svar!
Avatar billede fangel Nybegynder
28. november 2003 - 18:35 #32
svaa'r
Avatar billede drinkit Praktikant
28. november 2003 - 18:36 #33
Også dig roenvig.. Du hjalp jo også :P
Avatar billede roenving Novice
29. november 2003 - 04:37 #34
Velbekomme '-)
Avatar billede roenving Novice
30. november 2003 - 12:31 #35
-- 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