Avatar billede shjorth Nybegynder
07. september 2008 - 14:52 Der er 4 kommentarer og
1 løsning

Difference mellem 2 datoer (php)

Hejsa.

Jeg har $idag som er date("Y-m-d"); og $row['dato'] som er samme format.

Det jeg skal nu er at finde differencen mellem de 2 dage.
F.eks:

$idag = 2008-09-07
$row['dato'] = 2008-09-06

Der er så 1 dags difference.
Jeg forsøgte at gøre flg:
$days = $idag - $row['dato'];
Men får blot returneret et 0.

Nogle ideer?

Mange tak
Avatar billede coderdk Praktikant
07. september 2008 - 15:35 #1
$idag = strtotime( "2008-09-07" );
$dato = strtotime( $row['dato'] );
$diff = $idag - $dato;

nu indeholder $diff differencen i ANTAL SEKUNDER ;) Så må du selv dividere ;)
Avatar billede coderdk Praktikant
07. september 2008 - 15:36 #2
Du kan gøre det i REN SQL:

SELECT DATEDIFF( NOW(), dato) AS dato_difference FROM dintabel
Avatar billede sorensen_123 Nybegynder
08. september 2008 - 09:27 #3
Fandt en kode på nettet, og rettede lidt:
<?

/*
evt:
$explodedate = explore("-",$row[dato]");

$db_dag        = $explodedate[2];
$db_maanede        = $explodedate[1];
$db_aar        = $explodedate[0];

Men ville være meget lettere, hvis det du gemte i databasen var time().

Hvis du plusser nogle dage til osv inden du gemmer det, kan du bruge:
strtotime("now +2 days"); f.eks.

Så kan du hente det til variabler vha.:
$db_dag = date("d",$row[dato]);
etc.
*/

$db_dag        = 6;
$db_maanede        = 9;
$db_aar        = 2008;

$nu_dag        = 7;
$nu_maanede        = 9;
$nu_aar        = 2008;


//Så kører koden selv.. Ret selv printet til det du vil have..
$db_maanede_max        = date ("t",mktime (0,0,0,$db_maanede,$db_dag,$db_aar));

$db_dag_diff         = $db_maanede_max - $db_dag;

$db_maanede_diff         = 12 - $db_maanede - 1;

$start_day        = 1;
$start_mon        = 1;
$start_yr        = $db_aar + 1;

$day_diff    = ($nu_dag - $start_day) + 1;
$mon_diff    = ($nu_maanede - $start_mon) + 1;
$yr_diff    = ($nu_aar - $start_yr);

$day_diff    = $day_diff + $db_dag_diff;
$mon_diff    = $mon_diff + $db_maanede_diff;

if ($day_diff >= $db_maanede_max)
{
    $day_diff = $day_diff - $db_maanede_max;
    $mon_diff = $mon_diff + 1;
}

if ($mon_diff >= 12)
{
    $mon_diff = $mon_diff - 12;
    $yr_diff = $yr_diff + 1;
}
print "The difference between <b>".$db_aar."-".$db_maanede."-".$db_dag."</b> ";
print "and <b>".$nu_aar."-".$nu_maanede."-".$nu_dag."</b> is:";
print "<br><br>";

$years = "years";
$days = "days";
if ($yr_diff == "1") $years = "year";
if ($day_diff == "1") $days = "day";

print $yr_diff." ".$years.", ";
print $mon_diff." month and ";
print $day_diff." ".$days;

?>

Husk at datoerne skal være UDEN leading zero, f.eks. januar er IKKE 01, men 1. ellers virker systemet ikke.
Avatar billede shjorth Nybegynder
08. september 2008 - 17:06 #4
coderdk, din første post var det jeg endte med at bruge.. Ved ikke om det er smart, men det virker som det skal :D
Så ligger du ikke et svar?

Ellers tak for svarene
Avatar billede coderdk Praktikant
08. september 2008 - 17:15 #5
ok :)
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