Avatar billede kr-data Nybegynder
31. juli 2004 - 16:39 Der er 10 kommentarer og
1 løsning

Fejl i funktion, giver helt vandvittigt output

Hej eksperter

Hvad er fejlen, giver funktionen følgende input: 31/07/04 16:40, 5. Og jeg får -12355 som resultat. Hvad går galt??? Den burde så vidt jeg kan se give 0407311635.


function lastRaid($time, $t2) {
    list($date, $time) = explode(" ", $time);
    list($hours, $mins) = explode(":", $time);
    list($date, $month, $year) = explode("/", $date);

    if ($mins < $t2) {
        if ($hours == 0) {
            if ($date == 1) {
                if ($month == 1) {
                    $year = $year-1;
                    $month = 12;
                } else {
                    $month = $month-1;
                }
            } else {
                $date = $date-1;
            }
        $hours = 23;
        } else {
            $hours = $hours - 1;
        }
        $mins = 60+$mins-$t2;
    } else {
        $mins = $mins-$t2;
    }
    $date = $year . $month . $date . $hours . $mins;
    return $date;
}
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 16:52 #1
Den ser rigtig ud - er du sikker på at det er den, der giver det sjove tal?
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 17:01 #2
jah, rigtig er måske så meget sagt. Du får ikke gjort en 7 til 07, hvis der kommer
sådan een, men den skal altså ikke give det resultat du har nævnt.
Avatar billede kr-data Nybegynder
31. juli 2004 - 17:02 #3
Ja det er det. Jeg bruger

echo lastRaid($raidsROW["time"], 5) . "<br>" . lastNow();

og får

-12355
0407311705

:S syns også det er vildt mærkeligt :S
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 17:03 #4
Fx. vil
print lastRaid('31/07/04 16:07', 5);
give
  040731162
som sikkert burde være
  0407311602
Avatar billede kr-data Nybegynder
31. juli 2004 - 17:04 #5
woops, den retter jeg lige
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 17:06 #6
Men det kan stadig ikke give det resultat. Hvad har du ellers prøvet?
Avatar billede kr-data Nybegynder
31. juli 2004 - 17:08 #7
Så ser den sådan ud:

function lastRaid($time, $t2) {
    list($date, $time) = explode(" ", $time);
    list($hours, $mins) = explode(":", $time);
    list($date, $month, $year) = explode("/", $date);

    if ($mins < $t2) {
        if ($hours == 0) {
            if ($date == 1) {
                if ($month == 1) {
                    $year = $year-1;
                    $month = 12;
                } else {
                    $month = $month-1;
                }
            } else {
                $date = $date-1;
            }
        $hours = 23;
        } else {
            $hours = $hours - 1;
        }
        $mins = 60+$mins-$t2;
    } else {
        $mins = $mins-$t2;
    }

    if ($mins < 10) {
        $mins = "0" . $mins;
    }

    if ($hours < 10) {
        $hours = "0" . $hours;
    }

    $date = $year . $month . $date . $hours . $mins;
    return $date;
}

Og det giver det samme.

Har ikke prøvet andet :S
Avatar billede kr-data Nybegynder
31. juli 2004 - 17:11 #8
Prøvede lige med et manuelt input, det virkede :S chekker lige koden til databasen så, for så må det være der jeg har fået klokket i den :S syns ellers jeg havde chekket den grundigt!
Avatar billede kr-data Nybegynder
31. juli 2004 - 17:18 #9
:( slåfejl... hader dem, nå men smid et svar, for nu fik jeg da chekket funktionen og endda fået den forbedre lidt :) tak skal du have!
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 17:23 #10
Ellers tak, men jeg samler slet ikke på point.

Med "det andet" mente jeg netop at kalde den med et kendt resultat. Det gælder
om at reducere fejlmulighederne - og det var så det, der skulle til her.

Der er måske også andre steder der skal "0" foran?
Avatar billede kr-data Nybegynder
31. juli 2004 - 17:25 #11
ja ok, dagen :) tak skal du i hvertfald have :)
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