[php] verschil tussen 2 datums in dagen

Pagina: 1
Acties:
  • 815 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
ik wil dus het verschil tussen 2 datums berekenen. de eerste datum komt uit een database en de 2e is gewoon de huidige datum. Wat ik heb geprobeerd is het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$query = mysql_query("SELECT DATE_FORMAT(laatste_apk,'%Y%m%d') AS laatste_apk FROM autos");
while($array = mysql_fetch_array($query)) 
{   
    $datum1 = $array[laatste_apk];
    $datum2 = date("Ymj");
    echo $datum1;
    echo ("<br>");
    echo $datum2;
    echo ("<br>");
    $datum3 = $datum2 - $datum1;
    echo $datum3;
    echo ("<br><br>");
    
}
?>


dit werkt dus niet. ik kan mij nog herinneren dat er in delphi je data om kon zetten in aantal dagen vanaf 1970 ofzo bestaat zoiets ook voor php ?

Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

Gebruik de php functie mkdate(); om het aantal seconden na 0:00:00 01-01-1970 te krijgen. In MySQL heet deze formaat de 'timestamp'

suc6!

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-09 18:27

pjvandesande

GC.Collect(head);

Zo iets:
PHP:
1
2
3
4
//Find the difference in year, month, and day 
$yeardiff = date("Y") - $dobyear; 
$monthdiff = date("m") - $dobmonth; 
$daydiff = date("j") - $dobday;

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Niet zo moeilijk doen joh. Data in een bepaald gewenst formaat uit de database halen moet je eigenlijk zoveel mogenlijk in je queries doen. Hiermee bedoel ik niet opmaak, maar bv types en sommige conversies. hier staan wel een paar handige dingetjes die van pas kunnen komen (ie exact de functie die je nodig hebt)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Gebruik het mktime commando van php uit mijn hoofd, dan maak je van beide datums een unix timestamp, (sec sinds 1970 ofzo), verschil daarvan zet je dan om in dagen.

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Uit m'n administratie projectje:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function date_diff($startdate, $enddate) // verschil in dagen tussen 2 data
{

    if ($startdate == '0000-00-00' || $enddate == '0000-00-00') { return(0); }
    if ($startdate < $enddate)
    {
        $tmp = $startdate;
        $enddate = $startdate;
        $startdate = $tmp;
    }


    list($startyear, $startmonth, $startday) = split('([^0-9])', $startdate); 
    list($endyear, $endmonth, $endday) = split('([^0-9])', $enddate); 

    return (date("z", mktime(0,0,0,$startmonth,$startday,$startyear) - mktime(0,0,0,$endmonth,$endday,$endyear)));
}


function date_sub($startdate, $interval, $type='month')
{
    list($day, $month, $year) = split('([^0-9])', $startdate); 
    switch ($type)
    {
        case 'month':
            return(date("d-m-Y", mktime(0,0,0,$month-$interval,$day,$year)));
        break;
        case 'day':
            return(date("d-m-Y", mktime(0,0,0,$month,$day-$interval,$year)));
        break;
    }
}


function date_add($startdate, $interval, $type='month')
{
    list($day, $month, $year) = split('([^0-9])', $startdate); 
    switch ($type)
    {
        case 'month':
            return(date("d-m-Y", mktime(0,0,0,$month+$interval,$day,$year)));
        break;
        case 'day':
            return(date("d-m-Y", mktime(0,0,0,$month,$day+$interval,$year)));
        break;
    }
}


Hope that helps :)

[ Voor 11% gewijzigd door SchizoDuckie op 20-09-2004 15:06 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

Verwijderd

timestamp van maken:
PHP:
1
2
3
//als die niet in je DB als time-stamp staat kan je de datum splitsen met bijv substr:

$verschil = (mktime() - mktime(0,0,0, substr($row["datum"],5,2), substr($row["datum"],8,2),substr($row["datum",0,4))) /60/60/24;


niet getest, maar zoiets moet het wel worden..
Het kan ook in een keer in de query, maar dat weet ik uit m'n hoofd niet. Moet je even in de mysql documentatie snuffelen.

[ Voor 30% gewijzigd door Verwijderd op 20-09-2004 15:42 ]


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
$day1 = strtotime("2004-01-31");

$day2 = strtotime("now");

$diff = (($day2 - $day1) / 86400);

Acties:
  • 0 Henk 'm!

  • Bas Jansen
  • Registratie: Juni 2000
  • Laatst online: 13-06 09:15
Als je MySQL 4.1.1 of nieuwer gebruikt:

SELECT DATEDIFF(laatste_apk,NOW()) AS aantaldagen FROM autos

Zie http://dev.mysql.com/doc/...e_and_time_functions.html

Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
Bedankt voor alle goede reply's ik ga er vanavond mee aan het testen om te kijken welke oplossing voor mij het beste werkt ik zal het resultaat hier posten!

_/-\o_

Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
Ik heb deze oplossing gebruikt misschien niet de mooiste maar het werkt :)
PHP:
1
2
3
4
5
6
<?
$day1 = strtotime($array[laatste_apk]); 
$day2 = strtotime("now"); 
$diff = (($day2 - $day1) / 86400);
$diff = number_format($diff, 0);
?>
Pagina: 1