phpbar.de logo

Mailinglisten-Archive

[php] Datumsdifferenz als TT.MM.JJJJ in Array packen

[php] Datumsdifferenz als TT.MM.JJJJ in Array packen

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Apr 27 12:13:14 CEST 2006


Hallo Alex,

Am Donnerstag, 27. April 2006 12:05 schrieb Alex:
> Bei obigem Code werden ja leider nur die zwei "Dates" 06.12.2006 und
> 03.02.2007 in das
> Array gepackt. Wie bekomme ich aber die dazwischen liegenden "Dates"
> (07.12.2006-02.02.2007) ebenfalls in das Array.
> Leider habe ich keinen Ansatz wie ich diese Tage berechnen könnte.

hier kommt die erweiterte Version, wo auch die Zwischendaten ermittelt 
und mitverarbeitet werden:


<pre>
<?php


  // 1. Ausgangsinformationen: von-Datum und bis-Datum

  $aAusgangsinfos = array('06.12.2006','03.02.2007');
  $aAlleTage      = array();


  // 2. von-Datum und bis-Datum zerlegen und Differenz in Tagen 
berechnen

  $aDatumVon = explode('.', $aAusgangsinfos[0]);
  $aDatumBis = explode('.', $aAusgangsinfos[1]);
  $iZeitVon  = mktime(0,0,0,$aDatumVon[1],$aDatumVon[0],$aDatumVon[2]);
  $iZeitBis  = mktime(0,0,0,$aDatumBis[1],$aDatumBis[0],$aDatumBis[2]);
  $iTageDiff = ($iZeitBis - $iZeitVon) / (60*60*24);


  /* 3. Array $aAusgangsinformationen leeren
   *    und mit allen Daten zwischen von- und bis-Datum einschliesslich 
fuellen */

  $aAusgangsinfos = array();
  for ($i=0; $i<($iTageDiff+1); $i++) {
    $aAusgangsinfos[] = date('d.m.Y', ($iZeitVon+($i * 60*60*24)));
  }


  // 4. Daten durchlaufen und in Arraystruktur umfuellen

  foreach ($aAusgangsinfos as $sDatum) {

    $aDatum  = explode('.', $sDatum);
    $aEinTag = array();

    $aEinTag[$aDatum[0]][$aDatum[1]][$aDatum[2]] = '';
    $aAlleTage[] = $aEinTag;
  }


  // 5. Testausgabe des fertigen Ergebnisses

  print_r($aAlleTage);

?>
</pre>


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive