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"
Annonceindlæg fra Pax8
07. januar 2005 - 14:54
#1
PS. Jeg skal bruge et færdigt script - ikke et link eller en vejledning
07. januar 2005 - 15:59
#2
Smid lige den SQL du tager de to datoer ud med.
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.
07. januar 2005 - 19:06
#4
Det er en PHP funktion jeg skal bruge, ikke SQL
07. januar 2005 - 19:09
#5
Hvis du vil gøre det svært for dig selv, så skal du bruge mkdate og date.
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.
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); ?>
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
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 ?
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
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"; }
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
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"; }
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?
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.
08. januar 2005 - 12:49
#16
Ok. Så er jeg blank
Vi tilbyder markedets bedste kurser inden for webudvikling