Avatar billede Slettet bruger
20. oktober 2010 - 10:23 Der er 4 kommentarer og
1 løsning

Tid i timer og minutter?

Når man opretter en opgave i mit system angiver jeg time() som oprettelsesdatoen.

Hvordan finder jeg så ud af, hvor lang tid siden, det er, at opgaven blev oprettet i timer og minutter?

F.eks

"Det er 6 timer og 21 minutter siden opgaven blev oprettet" ?
Avatar billede Slettet bruger
20. oktober 2010 - 10:43 #1
Det skal der faktisk overraskende langstrakt kode til.
Jeg bruger denne funktion:

function time_diff($start, $end="NOW")
{
        $sdate = strtotime($start);
        $edate = strtotime($end);

        $time = $edate - $sdate;
        if($time>=0 && $time<=59) {
                // Seconds
                $timeshift = $time.' sekunder ';

        } elseif($time>=60 && $time<=3599) {
                // Minutes + Seconds
                $pmin = ($edate - $sdate) / 60;
                $premin = explode('.', $pmin);
             
                $presec = $pmin-$premin[0];
                $sec = $presec*60;
             
                $timeshift = $premin[0].' min '.round($sec,0).' sek';

        } elseif($time>=3600 && $time<=86399) {
                // Hours + Minutes
                $phour = ($edate - $sdate) / 3600;
                $prehour = explode('.',$phour);
             
                $premin = $phour-$prehour[0];
                $min = explode('.',$premin*60);
             
                $presec = '0.'.$min[1];
                $sec = $presec*60;

                $timeshift = $prehour[0].' timer '.$min[0].' min '.round($sec,0).' sek';

        } elseif($time>=86400) {
                // Days + Hours + Minutes
                $pday = ($edate - $sdate) / 86400;
                $preday = explode('.',$pday);

                $phour = $pday-$preday[0];
                $prehour = explode('.',$phour*24);

                $premin = ($phour*24)-$prehour[0];
                $min = explode('.',$premin*60);
             
                $presec = '0.'.$min[1];
                $sec = $presec*60;
             
                $timeshift = $preday[0].' dag '.$prehour[0].' timer '.$min[0].' min ';

        }
        return $timeshift;
}

Brug:
echo "Det er ".time_diff( $din_start_time )." siden opgaven blev oprettet";
Avatar billede Slettet bruger
20. oktober 2010 - 10:48 #2
Viser ikke korrekt . Den fortæller mig, det er "14902 dag 8 timer 47 min " ved timestamp: 1287562835
Avatar billede repox Seniormester
20. oktober 2010 - 11:18 #3
Altså, jeg gør således:

    $dif = time() - $time_from_database;
   
    $hours = (int) ($dif/3600); // her beregner jeg timer
    $minutes = (int) (($dif / 60) % 60); // resterende minutter
    $seconds = (int) ($dif % 60); // resterende sekunder
Avatar billede Slettet bruger
20. oktober 2010 - 11:22 #4
Smid svar error.. det virkede
Avatar billede repox Seniormester
20. oktober 2010 - 11:27 #5
Jeg kan se at #1 havde dage med; hvis det også er ønsket gør du således i stedet:
    $dif = time() - $time_from_database;
       
    $days = (int) ($dif/86400);
    $hours = (int) (($dif/3600) % 24);
    $minutes = (int) (($dif / 60) % 60);
    $seconds = (int) ($dif % 60);
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