Avatar billede webname Nybegynder
04. februar 2009 - 07:48 Der er 6 kommentarer

Tid mellem klokkeslet

Hej Eksperter,

Jeg er ved at lave et php-script to skal kunne udlevere timer og minutter mellem to klokkeslet.

Hvordan gør jeg dette? Jeg har haft kigget på mktime(), time() og date(), men jeg syntes ikke rigtigt de funktioner kan bruges til det?

Håber i er friske på at hjælpe mig

På forhånd tusind tak :D

Hilsen Jannik
Avatar billede OskarRough Nybegynder
04. februar 2009 - 09:13 #1
Hej Jannik,

Jeg tror, du finder dit svar på Eksperten lige her: http://www.eksperten.dk/spm/851120


Mvh
Avatar billede webname Nybegynder
04. februar 2009 - 09:41 #2
Hej Oskar,

Jeg tror ikke helt det besvare det :(

Jeg har to klokkeslæt fx 10:00 og 12:35 og jeg vil vide hvor mange timer og minutter der er imellem.. Ved ikke om det forklare det bedre :O

Håber der er nogle der ved det. :)
Avatar billede OskarRough Nybegynder
04. februar 2009 - 11:34 #3
Hm, det gør det ikke for mig i hvertfald. Scriptet fra det andet spørgsmål gør jo lige præcis dét, regner ud, hvor lang tid der er i mellem to klokkeslæt?

<?php
function get_relative_time($datetime) {
    $diff = time() - strtotime($datetime);
    if ($diff < 60)
        return $diff . " sekund" . (($diff != 1) ? "er" : "") . " siden";
    $diff = round($diff / 60);
    if ($diff < 60)
        return $diff . " minut" . (($diff != 1) ? "ter" : "") . " siden";
    $diff = round($diff / 60);
    if ($diff < 24)
        return $diff . " time" . (($diff != 1) ? "r" : "") . " siden";
    $diff = round($diff / 24);
    if ($diff < 7)
        return $diff . " dag" . (($diff != 1) ? "e" : "") . " siden";
    $diff = round($diff / 7);
    if ($diff < 4)
        return $diff . " uge" . (($diff != 1) ? "r" : "") . " siden";
    return date("j/n-y", strtotime($datetime));
}
?>
Avatar billede webname Nybegynder
04. februar 2009 - 12:33 #4
Så er jeg lidt forvirret :(

Når jeg kalder det igen, hvordan smider jeg så de to klokkeslet ned i funktionen?
Avatar billede OskarRough Nybegynder
04. februar 2009 - 13:15 #5
<?php get_relative_time($dindato) ?>

Så sammenligner den med klokken lige nu. Hvis du vil sammenligne med et andet klokkeslet end nu, skal funktionen udvides en smule. Her er en udgave af funktionen, der modtager to dato, den så sammenligner. Jeg har ikke testet det..

<?php
function get_relative_time_new($datetime, $seconddatetime) {
    $diff = strtotime($seconddatetime) - strtotime($datetime);
    if ($diff < 60)
        return $diff . " sekund" . (($diff != 1) ? "er" : "") . " siden";
    $diff = round($diff / 60);
    if ($diff < 60)
        return $diff . " minut" . (($diff != 1) ? "ter" : "") . " siden";
    $diff = round($diff / 60);
    if ($diff < 24)
        return $diff . " time" . (($diff != 1) ? "r" : "") . " siden";
    $diff = round($diff / 24);
    if ($diff < 7)
        return $diff . " dag" . (($diff != 1) ? "e" : "") . " siden";
    $diff = round($diff / 7);
    if ($diff < 4)
        return $diff . " uge" . (($diff != 1) ? "r" : "") . " siden";
    return date("j/n-y", strtotime($datetime));
}
?>

Så du har to funktioner:
get_relative_time($dindato)
get_relative_time_new($dindato, $enandendato)
Avatar billede webname Nybegynder
04. februar 2009 - 13:25 #6
Tusind tak for dit svar, jeg ved det er mig der er dum - og har et spørgsmål mere..

Når jeg køre nedenstående, hvordan får jeg den så til at resultere et komma tal, fx 1,4 time.. Lige nu runder den ned og siger 1 time siden ?

Håber du stadig er frisk, så skal du tilgængel nok snart slippe for flere spørgsmål :)

<?php 
function get_relative_time_new($datetime, $seconddatetime) {
    $diff = strtotime($seconddatetime) - strtotime($datetime);
    if ($diff < 60)
        return $diff . " sekund" . (($diff != 1) ? "er" : "") . " siden";
    $diff = round($diff / 60);
    if ($diff < 60)
        return $diff . " minut" . (($diff != 1) ? "ter" : "") . " siden";
    $diff = round($diff / 60);
    if ($diff < 24)
        return $diff . " time" . (($diff != 1) ? "r" : "") . " siden";
    $diff = round($diff / 24);
    if ($diff < 7)
        return $diff . " dag" . (($diff != 1) ? "e" : "") . " siden";
    $diff = round($diff / 7);
    if ($diff < 4)
        return $diff . " uge" . (($diff != 1) ? "r" : "") . " siden";
    return date("j/n-y", strtotime($datetime));
}

//get_relative_time($dindato);
$test = get_relative_time_new("11:00", "12:12");
echo $test;
?>
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

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