Avatar billede -kenner- Nybegynder
09. marts 2005 - 20:13 Der er 23 kommentarer og
1 løsning

Foreskellen mellem to datoer i dage!

Hej eksperter,

Jeg er forholdsvis ny til php, og søger lidt hjælp til en funktion, som skal regne forskellen ud mellem to datoer i dage.

Jeg vil åbne siden i et iframe, som har værdierne i sit link.

Mit problem er at jeg ikke ved hvordan jeg skal kode funktionen, der udregner foreskellem mellem dagen i dag, omg datoen parret begyndte at komme sammen.

Iframe kode:
<iframe name="HovedFrame" src="side.php?navnl=Palle&navn2=Kirsten&dato=22-10-04" align="center" name="HovedFrame" scrolling=="no" style="width:100%; height:50px;" frameborder="0"></iframe>

Side Koden:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
      <title>Kæreste dage</title>
</head>
<body>
<?php
$navn1 = $_GET['navn1'];
$navn2 = $_GET['navn2'];
$dato = $_GET['dato'];

$dage = $dato - date()

echo "$navn1 og $navn2 har været kærster i $dage dage"
?>
</body>
</html>
Avatar billede Slettet bruger
09. marts 2005 - 20:19 #1
I en kommentar i PHP dokumentationen til funktionen checkdate() skriver moon at justmoon dot de:
A method to calculate the days between two dates:

<?php
function diff_days($start_date, $end_date
{
  return floor(abs(strtotime($start_date) - strtotime($end_date))/86400);
}

// You can use whatever days you want
echo diff_days("20031013", "20040105"); // result: 84

// You can use every format strtotime supports
echo diff_days("now", "-1 year");

// You can mix start and end
echo diff_days("20031203", "20031201"); // result: 2
?>

--
pacroon
Avatar billede Slettet bruger
09. marts 2005 - 20:20 #2
Der mangler så lige en slutparentes efter $end_date :)
Avatar billede -kenner- Nybegynder
09. marts 2005 - 20:28 #3
Kan du ikke lige smide slutparentesen ind, kan ikke se hvor den mangler..
Avatar billede -kenner- Nybegynder
09. marts 2005 - 20:32 #4
Og forresten, kan jeg så ikke bruge denne formatering af datoen: 02-02-2004
Avatar billede sukos Juniormester
09. marts 2005 - 20:49 #5
Her er en anden, som bruger time()

<?php
function days($var) {
$d_sec = (time()-$var);
$dage = floor($d_sec/86400);
return  $dage;
}
echo time() ."<p>";
echo days(1110307472);
?>

Men er din dato gemt som f.eks. 02-02-2004 ???
Avatar billede -kenner- Nybegynder
09. marts 2005 - 21:02 #6
Det ville være det letteste for mig, eller 2-2-2004, bare datoen er sammenhængende, for ellers kan jeg jo ikke sende Den via http://www.side.dk/forside.php?date=02-02-2004
Avatar billede baitianlong Nybegynder
09. marts 2005 - 21:21 #7
du kan da sagtens sende 02022002, 02-02-2004, 02 02 2004 eller whatever med GET !?
Avatar billede Slettet bruger
09. marts 2005 - 21:27 #8
Ja, jeg forstår heller ikke helt...
Avatar billede -kenner- Nybegynder
09. marts 2005 - 21:29 #9
Vil det sige, at eg godt kan linke sådan: http://www.side.dk/index.php?dato=02 02 2004
Avatar billede -kenner- Nybegynder
09. marts 2005 - 21:30 #10
Men hoved sagen er at scrptet kommer til at virke, datoen skal bare være angivet med tal, og så skal jeg kunne se ud fra linket, hvilken dato de blev kærester..
Avatar billede baitianlong Nybegynder
09. marts 2005 - 21:34 #11
Ja, det kan du godt, det bliver bare lavet om til http://www.side.dk/index.php?dato=02%1002%202004 på vejen
Avatar billede sukos Juniormester
09. marts 2005 - 21:36 #12
Hvis du har din $dato som 02-02-2004

<?php

function days($var) {
$tid = explode("-", $var);
$d_sec = (time()-mktime(0,0,0,trim($tid[1]),trim($tid[0]),trim($tid[2])));
$dage = floor($d_sec/86400);
return  $dage;
}

echo days("02-02-2004");

?>
Avatar billede -kenner- Nybegynder
09. marts 2005 - 21:51 #13
Okay, men så skal den exploded dato over i forskels funktionen.. ikk'?

<?php
function days($var) {
$d_sec = (time()-$var);
$dage = floor($d_sec/86400);
return  $dage;
}
echo time() ."<p>";
echo days(1110307472);
?>
Avatar billede -kenner- Nybegynder
10. marts 2005 - 09:47 #14
Øhm..

Hvordan kommer hele koden så til at se ud? Med explode og foreskels funktion..
Avatar billede sukos Juniormester
10. marts 2005 - 10:01 #15
Hvordan er din dato gemt?
Avatar billede sukos Juniormester
10. marts 2005 - 10:02 #16
altså hvilket format?
02-02-2004
2004-02-02
time()

??????????????
Avatar billede -kenner- Nybegynder
10. marts 2005 - 11:06 #17
02-02-2004

Datoen er ikke gemt nogle steder, det er derfor det skal variere ud fra hvilken værdi ?dato har i linket..
Avatar billede sukos Juniormester
10. marts 2005 - 11:17 #18
? det forstår jeg ikke lige?
Hvordan kan du så lave et link?

Anyway, dette

<?php

function days($var) {
$tid = explode("-", $var);
$d_sec = (time()-mktime(0,0,0,trim($tid[1]),trim($tid[0]),trim($tid[2])));
$dage = floor($d_sec/86400);
return  $dage;
}

echo days("02-02-2004");
?>

viser jo antal dage mellem nu og 02-02-2004
Du bruger en $_GET til at sætte dato?

echo days($_GET["dato"]);

Evt. bør der nok tjekkes på om dato er gyldig, og explode giver tre m.m.
Avatar billede -kenner- Nybegynder
10. marts 2005 - 11:55 #19
Jeg åbner jo siden med et link, som indsætter dato, og de to navne:

<iframe name="HovedFrame" src="side.php?navnl=Palle&navn2=Kirsten&dato=22-10-04" align="center" name="HovedFrame" scrolling=="no" style="width:100%; height:50px;" frameborder="0"></iframe>
Avatar billede -kenner- Nybegynder
10. marts 2005 - 12:03 #20
Rettelse: <iframe name="HovedFrame" src="side.php?navn1=Palle&navn2=Kirsten&dato=22-10-04" align="center" name="HovedFrame" scrolling=="no" style="width:100%; height:50px;" frameborder="0"></iframe>
Avatar billede -kenner- Nybegynder
14. marts 2005 - 16:28 #21
Det virker : )

Men jev ville gerne hvis jeg kunne skrive en echo lige ud. Hvad er fejlen i denne linie?:
echo "$navn1 og $navn2 har været kærester i days($_GET['dato']) dage";

Ville være yderst taknemmelig, hvis jeg kunne få en funktion, som retunere en fejl, når ?dato er lig med et negativt tal..
Avatar billede -kenner- Nybegynder
14. marts 2005 - 17:03 #22
Løste det lige selv^

Men kunne godt tænke mig at få scriptet til at tælle ned til f.eks. min fødselsdag, som fungere på samme måde som overstående..

<?php

function days($var) {
$tid = explode("-", $var);
$d_sec = (time()-mktime(0,0,0,trim($tid[1]),trim($tid[0]),trim($tid[2])));
$dage = floor($d_sec/86400);
return  $dage;
}
$dage = days($_GET['dato']);
$dato = $_GET['dato'];

echo "Der er $dage tim min fødselsdag d. $dato! ";
?>
Avatar billede -kenner- Nybegynder
07. maj 2005 - 16:04 #23
Send svar sukos..
Avatar billede sukos Juniormester
09. maj 2005 - 07:51 #24
kan jeg godt
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