Avatar billede biskoppen Nybegynder
07. januar 2005 - 14:53 Der er 16 kommentarer

Forskel mellem 2 datoer

Jeg har 2 datoer i formattet 2005-01-07 09:05:35 som jeg netop har pillet ud af en mysql database

Jeg skal bruge et PHP script der kan modtage disse 2 datoer som parametre og returnere forskellen mellem dem i dage, timer og minutter, fek.s.

"3 days, 12 hours & 10 minutes ago"
Avatar billede biskoppen Nybegynder
07. januar 2005 - 14:54 #1
PS. Jeg skal bruge et færdigt script - ikke et link eller en vejledning
Avatar billede iss Novice
07. januar 2005 - 15:59 #2
Smid lige den SQL du tager de to datoer ud med.
Avatar billede iss Novice
07. januar 2005 - 16:08 #3
Hvis du selv vil lege lidt:

SELECT start, slut, TIMEDIFF(start, slut) AS forskel FROM tabel WHERE et eller andet bla bla....

Hvor start og slut er de to timedate typer og så vil forskel så være forskel på de to.
Avatar billede biskoppen Nybegynder
07. januar 2005 - 19:06 #4
Det er en PHP funktion jeg skal bruge, ikke SQL
Avatar billede iss Novice
07. januar 2005 - 19:09 #5
Hvis du vil gøre det svært for dig selv, så skal du bruge mkdate og date.
Avatar billede iss Novice
07. januar 2005 - 19:52 #6
Har forbarmet mig lidt over dig:
$start = explode('-', str_replace(' ', '-',str_replace(':', '-',$start)));
$slut = explode('-', str_replace(' ', '-',str_replace(':', '-',$slut)));

$start = mktime($start[3], $start[4], $start[5], $start[1], $start[2], $start[0]);
$slut = mktime($slut[3], $slut[4], $slut[5], $slut[1], $slut[2], $slut[0]);

$day = date('j', $slut-$start);
$hou = date('G', $slut-$start);
$min = date('i', $slut-$start);

echo "$day days, $hou hours & $min minutes ago";

Ikke lige prøvet, men ideen burde virke.
Avatar billede hmortensen Nybegynder
08. januar 2005 - 02:02 #7
Måske sådan her:

<?php

$start = "2005-01-07 09:05:35";
$slut = "2005-01-17 10:00:35";

function TidsForskel($start, $slut)
{
    $diff = strtotime($slut) - strtotime($start);
    $dage = floor($diff/86400);
    $timer = floor($diff/3600) % 60;
    $min = floor($diff/60) % 60;
    return $dage." days, ".$timer." hours & ".$min." minutes ago";
}

echo TidsForskel($start, $slut);

?>
Avatar billede biskoppen Nybegynder
08. januar 2005 - 02:05 #8
hmortensen,

Den virker næsten .. men det virker som om den ikke tager højde for hvis tidforskellen er mere end en måned .. da jeg får resultater som :  31 days, 37 hours & 16 minutes ago
Avatar billede hmortensen Nybegynder
08. januar 2005 - 02:08 #9
Du skrev:
"returnere forskellen mellem dem i dage, timer og minutter"

Skal den også skrive måneder ?

Skal der blot regnes med 30 dage i hver måned, eller hvad vil du gerne ha ?
Avatar billede biskoppen Nybegynder
08. januar 2005 - 02:10 #10
Nej, dage er fint, men der er ikke noget der hedder 31 dage og 37 timer.. så må det være 32 dage og 13 timer
Avatar billede hmortensen Nybegynder
08. januar 2005 - 02:27 #11
Ja, det var mig der ikke fik læst det ordenligt.
Den her skulle gerne virke:

function TidsForskel($start, $slut)
{
    $diff = strtotime($slut) - strtotime($start);
    return date("z", $diff)." days, ".date("G", $diff)." hours, ".date("i", $diff)." minutes ago";
}
Avatar billede biskoppen Nybegynder
08. januar 2005 - 02:44 #12
Nej, ikke helt..

Når jeg kalder funktionen med disse parametre :

TidsForskel('2005-01-07 20:14:29', '2005-01-07 20:56:38');

Bliver resultatet : 364 days, 18 hours, 42 minutes ago

Bytter jeg om på den :

TidsForskel('2005-01-07 20:56:38', '2005-01-07 20:14:29');

Bliver resultatet : 364 days, 17 hours, 15 minutes ago

Men der har du ihvertfald 2 datoer at forsøge med
Avatar billede hmortensen Nybegynder
08. januar 2005 - 02:58 #13
Det eneste jeg lige kan komme på, er vores tidszone.

Prøv sådan her:
function TidsForskel($start, $slut)
{
    $diff = strtotime($slut) - strtotime($start) - 3600;
    return date("z", $diff)." days, ".date("G", $diff)." hours, ".date("i", $diff)." minutes ago";
}
Avatar billede biskoppen Nybegynder
08. januar 2005 - 03:02 #14
Nix :(

Det hjælper intet

Du burde selv kunne kalde funktionen med de 2 datoer jeg gav dig og se samme fejl?
Avatar billede hmortensen Nybegynder
08. januar 2005 - 03:15 #15
Jeg får ikke samme resultater som dig.

Du kan se mit resultat her:
http://test.no-mercy.dk/1.php

Den første er god nok, men nummer to kan ikke lade sig gøre, da regnestykket giver et negativt resultat.
Avatar billede biskoppen Nybegynder
08. januar 2005 - 12:49 #16
Ok. Så er jeg blank
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