Avatar billede technodance.dk Nybegynder
16. april 2004 - 07:27 Der er 6 kommentarer og
1 løsning

ud regn tid??

Hej exp'er

jeg har to tider.

jeg kunne tænke mig at finde hvor lang tid der er gåret imellem

tid_1 = 2004-04-16 07:11:42

tid_2 = 2004-04-16 07:20:28
Avatar billede nicklasb Nybegynder
16. april 2004 - 07:29 #1
noget lignende;

<?php
function timeago($output, $fromdate, $todate) {

    list ($funcyear, $funcmonth, $funcday, $funchour, $funcminute, $funcsecond) = explode ('-', $fromdate);
    $olddate = mktime($funchour,$funcminute,$funcsecond,$funcmonth,$funcday,$funcyear);
    if ($todate == 'now') {
        $newdate = time();
    } else {
        unset($funcyear, $funcmonth, $funcday, $funchour, $funcminute, $funcsecond);
        list ($funcyear, $funcmonth, $funcday, $funchour, $funcminute, $funcsecond) = explode ('-', $todate);
        $newdate = mktime($funchour,$funcminute,$funcsecond,$funcmonth,$funcday,$funcyear);
    }
    $between = $newdate - $olddate;

    if ($output == 1) {
        $out = $between;
    } elseif ($output == 2) {
        $out = floor( $between / 60 );
    } elseif ($output == 3) {
        $out = floor( $between / ( 3600 ) );
    } elseif ($output == 4) {
        $out = floor( $between / ( 86400 ) );
    } elseif ($output == 5) {
        $out = floor( $between / ( 604800 ) );
    } elseif ($output == 6) {
        $yearsbetween = date('Y',$newdate) - date('Y',$olddate);
        $monthsbetween = date('m',$newdate) - date('m',$olddate) + ( $yearsbetween * 12 );
        if (date('dHis',$newdate) < date('dHis',$olddate)) {
            $out = $monthsbetween - 1;
        } else {
            $out = $monthsbetween;
        }
    } elseif ($output == 7) {
        $yearsbetween = date('Y',$newdate) - date('Y',$olddate);
        if (date('mdHis',$newdate) < date('mdHis',$olddate)) {
            $out = $yearsbetween - 1;
        } else {
            $out = $yearsbetween;
        }
    } elseif ($output == 8) {
        $days = intval($between / 86400);
        $tmp = $between - ($days * 86400);
        $hours = intval($tmp / 3600);
        $tmp = $tmp - ($hours * 3600);
        $minutes = intval($tmp / 60);
        $tmp = $tmp - ($minutes * 60);
        $seconds = $tmp;
   
        $out = $days;
        if ($days == 1) { $out .= ' dag '; } else { $out .= ' dage '; }
        $out .= $hours;
        if ($hours == 1) { $out .= ' time '; } else { $out .= ' timer '; }
        $out .= $minutes;
        if ($minutes == 1) { $out .= ' minut og '; } else { $out .= ' minutter og '; }
        $out .= $seconds;
        if ($seconds == 1) { $out .= ' sekund'; } else { $out .= ' sekunder'; }
    }



    return $out;
}

# ==========================================
# Format ind:
#    1 : Se den ønskede output neden for
#    2 : Format: yyyy-mm-dd-tt-mm-ss
#            eksempel:
#            2003-6-8-12-10-0
#            vil betyde:
#            den 8/6 2003 kl. 12:10:00
#
# Format ud:
#    1 : Sekunder imellem
#    2 : Minutter imellem
#    3 : Timer imellem
#    4 : Dage imellem
#    5 : Uger imellem
#    6 : Måneder imellem
#    7 : År imellem
#    8 : En komplet streng med forksel i
#        alle førnævnte tids-intervaller
#
# ------------------------------------------
# Eksempel:
#
#  -.-.-.-.-.-.-.-.-.-.-.-.-.-.-
#    $timefrom = '2003-6-8-12-10-0';
#    $timeto  = 'now';
#    echo timeago(4,$timefrom,$timeto);
#  -.-.-.-.-.-.-.-.-.-.-.-.-.-.-
#
# Vil udskrive hvor langt tid der er gået
# siden Søndag den 8/6 2003 kl. 12:10:00
# Resultatet bliver selvfølgelig mere
# præcist alt efter hvor lille et tids-
# interval der vælges som output.
# I dette eksempel er der valgt at få det ud
# i dage. Så hvis det i dag er mandag den
# 9/6 2003 (efter klokken 12:10:00), giver
# funktionen 1 dag som resultat.
# ------------------------------------------
#
# Funktionen finder kun forskel på tider,
# TILBAGE  i tiden og til nu. Hvis du ønsker
# at finde et tidsinterval til en foran-
# liggende til, skal der ændres en smule
# i funktionen.
#
# Funktionen kan også finde et tidsinterval
# mellem to foruddifinerede tidsangivelser.
# For at opnå denne funktion skal 'now' blot
# udskiftes med den ønskede tid.
# Sidste tidsangivelse SKAL være den seneste
# ==========================================
?>
Avatar billede dennismp Nybegynder
16. april 2004 - 08:05 #2
prøv:
$date1 = strtotime("2004-04-16 07:11:42");
$date2 = strtotime("2004-04-16 07:20:28");
$datediff = $date2 - $date1; // Datediff er forskellen i sekunder

Hvis du vil have forskellen som tekst, så brug;
http://dennis.moellegaard.dk/v4/php/sec2text.php?source=2

echo sec2text($datediff);
Avatar billede technodance.dk Nybegynder
16. april 2004 - 16:24 #3
dennismp >> Call to undefined function: sec2text()

havd kan der lige være være galt
Avatar billede technodance.dk Nybegynder
16. april 2004 - 16:41 #4
hvordan laver jeg 527 om til 5min og 27sec
Avatar billede dennismp Nybegynder
16. april 2004 - 18:09 #5
techonodance; som jeg skrev, så skal du bruge den fil jeg linkede til. Den har sec2text-funktionen.
Avatar billede technodance.dk Nybegynder
16. april 2004 - 19:13 #6
<?
$date1 = strtotime("2004-04-16 07:11:42");
$date2 = strtotime("2004-04-16 07:20:28");
$datediff = $date2 - $date1; // Datediff er forskellen i sekunder

function sec2text($datediff) {
    $units = array(
        86400 => 'days',
        3600 => 'hours',
        60 => 'min',
        1 => 'sec' );

    $out = '';
    foreach($units as $unit => $txt ) {
        $t = floor($secs / $unit);
        if( $t > 0 ) {
            $secs -= ($t * $unit );
            $out .= $t . ' ' . $txt . ' ';
        }
    }
    return $out;
}

print sec2text(86400+3600+120+4);

?>

visser ikke noget
Avatar billede dennismp Nybegynder
16. april 2004 - 20:14 #7
<?
$date1 = strtotime("2004-04-16 07:11:42");
$date2 = strtotime("2004-04-16 07:20:28");
$datediff = $date2 - $date1; // Datediff er forskellen i sekunder

print sec2text($datediff);

function sec2text($secs) {
    $units = array(
        86400 => 'days',
        3600 => 'hours',
        60 => 'min',
        1 => 'sec' );

    $out = '';
    foreach($units as $unit => $txt ) {
        $t = floor($secs / $unit);
        if( $t > 0 ) {
            $secs -= ($t * $unit );
            $out .= $t . ' ' . $txt . ' ';
        }
    }
    return $out;
}
?>
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