Avatar billede netpimp Nybegynder
22. december 2008 - 10:18 Der er 12 kommentarer og
1 løsning

Nedtælling i sekunder

Hej,

Jeg skal bruge et lille script der kan udregne og udskrive hvor mange sekunder der er til et givent tidpunkt.
F.eks. skal det kunne sige der er 7200 sekunder til kl. 15, når klokken så bliver 15, skal det så sige der er så og så mange sekunder til klokken 18.
Altså scriptet skal altså på en eller anden måde genstarte nedtællingen i sekunder hver 3. time.

Nogle der kan give en forklaring på hvordan jeg vil kunne lave et sådant script?
Avatar billede elskermad.dk Nybegynder
22. december 2008 - 10:24 #1
måske:

<?

$fixpunkt = mktime(0,0,0,12,22,2008);

$left = $fixpunkt % (60*60*3);

echo $left . " sekund" . (($left == 1)? "" : "er");

?>
Avatar billede netpimp Nybegynder
22. december 2008 - 10:34 #2
Jeg tror ikke jeg er helt med på hvad dit script gør elskermad.dk, det eneste jeg lige er med på er at det uskriver 7200 sekunder, men det skulle jo gerne tælle ned hver gang jeg klikker opdater og vi kommer nærmere det givende tidspunkt.

Men tak for forsøget :)
Avatar billede dkfire Nybegynder
22. december 2008 - 11:00 #3
Måske noget med så:

<?php
$hour = 15;
$fixpunkt = mktime($hour,0,0,12,22,2008) - time();

//$left = $fixpunkt % (60*60*3);

echo $fixpunkt . " sekund" . (($fixpunkt == 1)? "" : "er");

?>

Men du vil kun kunne gøre brug af serverens ur, brugerens ur kan være forskelligt.
Den vil også kun tælle ned når du opdatere siden, du vil ikke se noget automatisk nedtælling.
Avatar billede netpimp Nybegynder
22. december 2008 - 11:07 #4
dkfire > Det er heller ikke meningen at den skal lave automatisk nedtælling :)

Men hvordan vil jeg kunne sætte flere tidspunkter ind i scriptet, så f.eks. den først tæller ned til kl. 15 når klokken så er 15 begynder den at tælle ned til kl. 18 osv?

I $fixpunkt kan jeg se datoen idag står, vil det sige at scriptet ikke virker imorgen, da det jo helst skal blive ved med at tælle ned på nogle fate tidspunkter hver dag.
Avatar billede showsource Seniormester
22. december 2008 - 11:53 #5
$today = strtotime(date("Y-m-d"));

$oneday = 86400; // en dag
$femten = 54000; // femten timer
$atten = 64800;  // atten timer

$today er i dag kl. 00.00.00
Så skal du sammenligne med time(), og ud fra det vise resultat
Avatar billede netpimp Nybegynder
22. december 2008 - 12:05 #6
Jeg tror godt jeg er med på hvad du mener, men er bare ikke lige sikker på hvordan jeg får det til at virke i praksis :S
Avatar billede netpimp Nybegynder
22. december 2008 - 23:13 #7
Nu har jeg forsøgt at lege lidt videre, men det jeg har fået lavet giver Parse error: syntax error, unexpected i linje 3,

<?php

$leap = 3600 * 3 (en time er 3600 sekunder);
$now = time();
$then = 0; // pt. 1. jan 1970, 00:00:00:1

if(($now - $then) % $leap === 0) {
}

echo $leap . " sekund" . (($leap == 1)? "" : "er");

?>

Nogle der har et god bud på hvordan jeg kan få det til at virke og udskrive sekunderne?
Avatar billede netpimp Nybegynder
22. december 2008 - 23:17 #8
Okay, det fandt jeg så selv ud af, og det endte sådan

<?php

$leap = 3600 * 3;
$now = time();
$then = 0; // pt. 1. jan 1970, 00:00:00:1

if(($now - $then) % $leap === 0) {
    // Nu er der gået præcis tre timer siden sidste udførelse.
}

echo $leap . " sekund" . (($leap == 1)? "" : "er");

?>

Dog får jeg udskrevet 10800 sekunder altså samtlige 3 timer, hvilket ikke helt var meningen, den skal udskrive hvor lang tid der er tilbage af de 3 timer i sekunder.
Avatar billede netpimp Nybegynder
22. december 2008 - 23:38 #9
Nå det fik jeg også styr på, nu er mit eneste problem at den tæller op af i stedet for ned af, nogle der kan hjælpe med det?

<?php

$leap = 3600 * 3;
$now = time();
$then = mktime(1,0,0,12,22,2008);

if(($now - $then) % $leap === 0) {
    // Nu er der gået præcis tre timer siden sidste udførelse.
}

$tid = ($now - $then) % $leap;

echo $tid . " sekund" . (($tid == 1)? "" : "er");

?>
Avatar billede elskermad.dk Nybegynder
22. december 2008 - 23:50 #10
træk $leap fra og gang med -1, burde det ikke give det rigtige så? :)

men hvor er eksperten bare et skønt forum, du har sikkert lært en masse ved din egen try-and-error - det er hvert fald sådan jeg har lært php... blive sat i gang herinde og så ellers forsøge sig frem
Avatar billede netpimp Nybegynder
23. december 2008 - 00:13 #11
Du var vist også sådan noget jeg ca. endte med :)

<?php

$leap = 3600 * 3;
$now = time();
$then = mktime(1,0,0,12,22,2008); // pt. 1. jan 1970, 00:00:00:1

if(($now - $then) % $leap === 0) {
    // Nu er der gået præcis tre timer siden sidste udførelse.
}

$time = ($now - $then) % $leap;
$udskriv = 10800 - $time;

echo $udskriv . " sekund" . (($udskriv == 1)? "" : "er");


?>

Men nu virker det som det skal, så hvis folk der har hjulpet lige ligger et svar så får i lige lidt points :)
Avatar billede elskermad.dk Nybegynder
23. december 2008 - 11:11 #12
snup du dem selv, glædelig jul :)
Avatar billede netpimp Nybegynder
30. december 2008 - 07:59 #13
Lukker, og et lidt forsinket i lige måde :)
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