Avatar billede gil-galad Nybegynder
22. april 2009 - 20:50 Der er 5 kommentarer og
1 løsning

Interval mellem to tidspunkter/datoer

Hej

Jeg har et mindre problem:

Jeg står med 4 variable:

$1 indeholder en dato, fx 25-04-2009
$A indeholder et klokkeslet, fx 11:25

$2 indeholder en dato, fx 23-04-2009
$B indeholder et klokkeslet, fx 08:45

1 og A hører sammen, og 2 og B hører sammen.


Jeg skal så have fundet ud af:
1: er der MERE end 24 timer mellem de to tidspunkter?
2: hvis nej: så skal jeg finde ud af hvor mange timer og minutter der er imellem. (TT:MM)



Håber nogle kan hjælpe!
Avatar billede webweaver Praktikant
22. april 2009 - 22:33 #1
Unix Epoch er løsningen. En genial funktion. Dette giver bare et tal, som svarer til dato og tid og det hele. Unix Epoch er sekunder siden 1970, og det gør det meget lettere at regne med, da det kan plus'es, trækkes fra og så videre. Netop som du efterspørger.

Forklaring af mktime.
mktime(timer, minutter, sekunder, måned, dag, år);

Kode eksempel som du efterspørger;

<?

    $dato1 = mktime(8, 45, 0, 4, 23, 2009);
    $dato2 = mktime(11, 25, 0, 4, 23, 2009);
   
    $definedBetween = 60 * 60 * 24; // Sekunder, minutter, timer. Ego sekunder i døgnet.
    $between = $dato2 - $dato1;
    $inMin = $between / 60;
   
    if ($between > $definedBetween) {
   
        echo "Der er mere end 24 timer mellem de 2 datoer";
   
    } else {
   
        echo "Der er mindre end 24 timer imellem datoerne.<br>";
        echo "Tiden imellem datoerne er " . $inMin . " minutter.";
   
    }

?>

Sig endelig til hvis du har spørgsmål til scriptet.
Testet, og virker :)
Avatar billede webweaver Praktikant
22. april 2009 - 22:47 #2
Hvis du lige skal have det hele med, så kan der evt. tilføjes dette.

<?

    $1 = "25-04-2009";
    $A = "11:25";
   
    $2 = "23-04-2009";
    $B = "08:45";
   
    $splitDato1 = explode("-", $1);
    $splitDato2 = explode("-", $2);
   
    $splitTid1 = explode(":", $A);
    $splitTid2 = explode(":", $B);

    $dato1 = mktime($splitTid1[0], $splitTid1[1], 0, $splitDato1[1], $splitDato1[0], $splitDato1[2]);
    $dato2 = mktime($splitTid2[0], $splitTid2[1], 0, $splitDato2[1], $splitDato2[0], $splitDato2[2]);
   
    $definedBetween = 60 * 60 * 24; // Sekunder, minutter, timer
    $between = $dato2 - $dato1;
    $inHours = ($between / 60);
   
    if ($between > $definedBetween) {
   
        echo "Der er mere end 24 timer mellem de 2 datoer";
   
    } else {
   
        echo "Der er mindre end 24 timer imellem datoerne.<br>";
        echo "Tiden imellem datoerne er " . $inHours . " minutter.";
   
    }

?>
Avatar billede webweaver Praktikant
22. april 2009 - 22:59 #3
Det gik forresten lige en tand for hurtigt. En lille fejl i det ovenover. Der skal lige byttes rundt på datoerne for at det vil virke.

$1 = "25-04-2009";
$A = "11:25";
   
$2 = "23-04-2009";
$B = "08:45";

skal være

$1 = "23-04-2009";
$A = "08:45";
   
$2 = "25-04-2009";
$B = "11:25";

Udover det skal det lige siges at du ikke må have en variabel der hedder $1 fx. Det giver fejl hvis den kun indeholder tal. Kald den noget andet, og det vil virke :)
Avatar billede gil-galad Nybegynder
23. april 2009 - 14:30 #4
Det virker bare!

Der er en lille ting. Hvordan for jeg tidsrummet vist som timer og minutter?
Avatar billede gil-galad Nybegynder
23. april 2009 - 14:58 #5
Jeg har fundet ud af det. Tak skal du have!
Avatar billede webweaver Praktikant
23. april 2009 - 16:54 #6
Det var så lidt :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Service Line Specialist – EPS – SAP

Formpipe Software A/S

Head of Customer Support

Cognizant Technology Solutions Denmark ApS

Graduate - Software Automation Program