Avatar billede Mik2000 Professor
20. april 2005 - 14:57 Der er 9 kommentarer og
1 løsning

Dato problem

Hej

Jeg har en dato i en database som ligger i formattet d-m-Y.

Jeg har så en side hvorpå databasens indhold skal vises hvis det maks er 3 dage gammelt.

Problemet er så er hvis jeg har date("d-m-Y") og skal trække datoen fra databasen fra, så trækker den kun i dagene. Dvs at hvis den i databasen er fra d. 19-03-2005 og det i dag er den 20-04-2005 så tror den at den kun er en dag gammel.

Så hvordan skal jeg trække en dato fra en anden?
Avatar billede bromer Nybegynder
20. april 2005 - 14:59 #1
Hvorfor har du også datoen liggende i det format? Af statistiske grunde antager jeg at du bruger MySQL, så hvorfor lægger du ikke datoerne i et datetime felt, så du kan bruge MySQLs INTERVAL funktionalitet.
Avatar billede barklund Nybegynder
20. april 2005 - 15:16 #2
Eller bare et DATE felt, hvis du ikke skal bruge tidspunkter, men kun datoer.
Avatar billede Mik2000 Professor
20. april 2005 - 15:30 #3
Hvordan benyttes denne da, hvis jeg nu gør det?
Avatar billede Mik2000 Professor
20. april 2005 - 15:31 #4
Vil stadig gerne høre hvis andre har ideer til løsning på den anden måde :)
Avatar billede Slettet bruger
20. april 2005 - 15:47 #5
<?php
function timestamp_from_MyDate($mydate) {
    sscanf($mydate, "%d-%d-%d", $day, $month, $year);
    $ts = mktime(0, 0, 0, $month, $day, $year);
    return $ts;
}
$t1 = timestamp_from_MyDate("19-03-2005");
$t2 = timestamp_from_MyDate("20-04-2005");
$diffDays = round(($t2 - $t1) / 60 / 60 / 24);
echo $diffDays;
?>

Hvis du kun skal bruge funktionen til at vise om der er 3 dages forskel kan du jo bruge sådan en her:

<?php
function lessthan3days($date1, $date2) {
    sscanf($date1, "%d-%d-%d", $day1, $month1, $year1);
    sscanf($date2, "%d-%d-%d", $day2, $month2, $year2);
    $ts1 = mktime(0, 0, 0, $month1, $day1, $year1);
    $ts2 = mktime(0, 0, 0, $month2, $day2, $year2);
    $diffDays = round(($ts2 - $ts1) / 60 / 60 / 24);
    if ($diffDays <= 3) return true;
    else return false;
}
if (lessthan3days("19-03-2005", "20-04-2005")) {
    echo "Mindre end 3 dage.";
} else {
    echo "Mere end 3 dage..";
}
?>


:-)
Avatar billede Mik2000 Professor
26. juni 2005 - 11:41 #6
Hej Gartzen. Tak for hjælpen. Kan ikke give dig point da det var en kommentar :(
Avatar billede barklund Nybegynder
26. juni 2005 - 13:47 #7
Til en anden gang så betyder det ikke nødvendigvis, at han ikke vil have point. Det kan lige så vel betyde at han (som mange andre herinde) kun lægger kommentarer indtil spørgeren beder om et svar - hvorefter svaret så kan godkendes.

Derudover ville jeg nu lave det rent i SQL - der er ingen grund til at involvere php i det her.
Avatar billede Mik2000 Professor
26. juni 2005 - 17:40 #8
Han må da gerne få pointene. Kan da bare lave et nyt spørgsmål. Men jeg plejer at ligge det som svar hvis jeg ønsker point og kommentar hvis jeg ikke gør eller bare har en kommentar.
Avatar billede bromer Nybegynder
26. juni 2005 - 17:49 #9
Tror også at det netop var barklunds pointe at ekspertens brugeres opførsel differentierer meget når det handler om modtagelse af point.
Avatar billede Mik2000 Professor
26. juni 2005 - 19:36 #10
Yepper
Men som sagt. Gartzen du kan bare skrive og så opretter jeg et nyt spørgsmål med samme point som du får.

Mvh
Kim
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