[PHP] Maanden berekenen

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

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 04-12 22:00
Hallo,

Hoe bereken ik het verschil tussen twee datum's? Bijvoorbeeld... ik heb 2002-02-07 en 2004-08-23 hoe kan ik nou met een rekensommetje er achterkomen hoeveel maanden verschil er tussen zit (32 Maanden)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Zet ze om naar een UNIX timestamp met mktime(), bereken het verschil en deel dan door 30,5 * 24 * 60 * 60 ofzow.

Rustacean


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 12-12 22:23

Gé Brander

MS SQL Server

Op woensdag 03 april 2002 09:11 schreef Monstar.nl het volgende:
Hallo,

Hoe bereken ik het verschil tussen twee datum's? Bijvoorbeeld... ik heb 2002-02-07 en 2004-08-23 hoe kan ik nou met een rekensommetje er achterkomen hoeveel maanden verschil er tussen zit (32 Maanden)
Welke taal?

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


Verwijderd

In welke taal? Je weet hoeveel maanden er in een jaar zitten, dus is het een kwestie van een array of zoiets maken met 12 elementen, een loopje en een counter. Niet vergeten ook nog de jaren bij te houden. (dus eerst kijken naar het verschil in jaren, dan weet je hoeveel keer je die array door moet gaan)

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 04-12 22:00
Het is in PHP dus dat is wel goed gegokt Manuzhai :)

Dus gewoon het eind jaar van het begin jaar aftrekken (2004 - 2002 = 2) euhmm.... dan loop ik vast

In 2002 zijn er nog 10 maanden
In 2003 zijn er nog 12 maanden
En in 2004 zijn er nog 8 maanden

(Hmmm die 32 klop ook niet...)

Die 30,5 Manuzhai... die kan niet... het moet wel precies gebeuren... ik heb ook al aan die time stamps gedacht want ik gebruik ze nu ook om het verschil in dagen te berekenen...

Maar ja... hoe moet ik verder?

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Op woensdag 03 april 2002 09:23 schreef Monstar.nl het volgende:
Het is in PHP dus dat is wel goed gegokt Manuzhai :)
Hmjah, jij progt altijd in PHP. :)

Maarruh, een for loopje dat eerst de maanden aftelt en daarna de dagen, en stopt bij de goeie datum dan misschien?

Rustacean


Verwijderd

Het is wel belangrijk om te weten welke taal je gebruikt en hoe die data zijn opgeslagen (als string ofzo..)

Als je de dagen negeert zou je het als volgt kunnen doen: Voor elke datum bereken je: het jaar * 12 + maand. Die twee getallen trek je van elkaar of.
Dus: 2002-2 = 2002*12+2 = 24026
en 2004-8 = 2004*12+8 = 24056
Het verschil is dan 30 maanden.
Dit komt omdat je de dagen niet meerekent.

Anders zou het aan moeten pakken zoals de vorige posters het aangeven.

edit:
Iemand was me al voor...

  • eborn
  • Registratie: April 2000
  • Laatst online: 12-12 14:43
Het moet wel met Unix Timestamps lukken denk ik. Misschien is het handig om de Stamps wel altijd op hele dagen af te ronden? Dus altijd een meervoud van 86400. Maar ik weet niet of je bijv. ook met jaartallen voor 1970 wil rekenen.

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 13:04
Excel:
A1= 7-2-2002
A2= 23-8-2004
A3= A2-A1 = 16-7-1902 = 928

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Op woensdag 03 april 2002 09:30 schreef eborn het volgende:
Het moet wel met Unix Timestamps lukken denk ik. Misschien is het handig om de Stamps wel altijd op hele dagen af te ronden? Dus altijd een meervoud van 86400. Maar ik weet niet of je bijv. ook met jaartallen voor 1970 wil rekenen.
OF door 2038. :)

Rustacean


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 04-12 22:00
Die oplossing van rmk werkt perfect!
Op woensdag 03 april 2002 09:30 schreef eborn het volgende:
Het moet wel met Unix Timestamps lukken denk ik. Misschien is het handig om de Stamps wel altijd op hele dagen af te ronden? Dus altijd een meervoud van 86400. Maar ik weet niet of je bijv. ook met jaartallen voor 1970 wil rekenen.
Maar als ik nou het pcies aantal maanden tussen 2 datums moet berekenen?

edit:
Hoe doe ik dat

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

[edit] lama

Rustacean


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 10-12 19:10

chem

Reist de wereld rond

zoiets?
PHP:
1
<?/***    Makes pretty dates from timespan (eg. time() - 86400: '1 day')**    Returns a human-readable representation of the timespan**    @author Pim Broekhof <pim@parse.nl>*    @author Michiel Roding <michiel@parse.nl>*    @version 1.3.9*    @param seconds integer unix-timestamp identifying the timespan*    @param absolute integer unix-timestamp to calculate the timespan relative to the current time*    @see ret()*/function retreldate($seconds, $absolute = 0) {    if($absolute > 0)        $seconds = time() - $absolute;    $modulos = array(604800, 86400 , 3600 , 60 , 1);    if(LOCALE == 'nl_NL')        $strings = array('weken', 'dagen', 'uren', 'minuten', 'seconden');    else        $strings = array('weeks', 'days', 'hours', 'minutes', 'seconds');    foreach ($modulos as $index => $modulo)    {        if ($seconds == 0)            break;        if (floor($seconds / $modulo) > 0 )        {            $str[] = floor($seconds / $modulo).' '.$strings[$index];            $seconds %= $modulo;        }    }    if(sizeof($str) == 0)     {        $str[] = '0 '.$strings[4];    }    return implode((array)$str,', ');}?>

Klaar voor een nieuwe uitdaging.


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Op woensdag 03 april 2002 10:04 kwakte chem een zooi code neer.
Die andere is handiger lijkt me:
Op woensdag 03 april 2002 09:29 schreef rmk het volgende:
Als je de dagen negeert zou je het als volgt kunnen doen: Voor elke datum bereken je: het jaar * 12 + maand. Die twee getallen trek je van elkaar of.
Dus: 2002-2 = 2002*12+2 = 24026
en 2004-8 = 2004*12+8 = 24056
Het verschil is dan 30 maanden.
Dit komt omdat je de dagen niet meerekent.

Rustacean


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 04-12 22:00
Op woensdag 03 april 2002 09:50 schreef Manuzhai het volgende:
[edit] lama
Deze is VET! Maar je hebt hem weg gehaalt zie ik... Mag ik hem nog gebruiken?

chem, ook bedankt maar die van Manuzhai was toch iets beter... sorry... :)

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 04-12 22:00
Op woensdag 03 april 2002 09:27 schreef Manuzhai het volgende:

[..]

Hmjah, jij progt altijd in PHP. :)
PHP roeleert! Of niet dan? Sorry... beetje offtopic...
Pagina: 1