Marco: Datum rechnen

Hi,

hab ein Datum aus ner MySQL DB in DATE-Form (also 2008-07-13). Möchte da gerne 48 Tage abziehen. Wieso kann ich nicht einfach $datum = $datum - 48 machen? geht das irgendwie anders?

  1. Moin!

    hab ein Datum aus ner MySQL DB in DATE-Form (also 2008-07-13). Möchte da gerne 48 Tage abziehen. Wieso kann ich nicht einfach $datum = $datum - 48 machen? geht das irgendwie anders?

    Weiss denn PHP das $datum ein Datum darstellt? Oder ist es nur ein String? Und was genau hast Du unternommen, damit PHP in deinen Kopf schauen kann um festzustellen, dass du 48 Tage und nicht Jahre, Stunden, Minuten, Sekunden... meinst?

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
  2. Hellihello

    Hi,

    hab ein Datum aus ner MySQL DB in DATE-Form (also 2008-07-13). Möchte da gerne 48 Tage abziehen. Wieso kann ich nicht einfach $datum = $datum - 48 machen? geht das irgendwie anders?

    würde ich in unixtime umrechnen, dann abziehen:

    http://de3.php.net/manual/de/function.mktime.php

      
    <?php  
    $dateString = "2008-07-13";  
    $dateArray = explode("-",$dateString);  
    $year = $dateArray[0];  
    $month = $dateArray[1];  
    $day = $dateArray[2];  
    var_dump($dateArray);  
    $dateUnix = mktime(0,0,0, $month ,$day, $year);  
    $days48 = 48 * 24 * 60 * 60;  
    $newDate = $dateUnix - $days48;  
    $newDateString = date("Y-m-d",$newDate);  
    echo $newDateString;  
    ?>  
    
    

    Dank und Gruß,

    frankx

    --
    tryin to multitain  - Globus = Planet != Welt
    1. Guten Tag,

      <?php
      $dateString = "2008-07-13";
      $dateArray = explode("-",$dateString);
      $year = $dateArray[0];
      $month = $dateArray[1];
      $day = $dateArray[2];
      var_dump($dateArray);
      $dateUnix = mktime(0,0,0, $month ,$day, $year);
      $days48 = 48 * 24 * 60 * 60;
      $newDate = $dateUnix - $days48;
      $newDateString = date("Y-m-d",$newDate);
      echo $newDateString;
      ?>

        
      Diese Code sollte nicht verwendet werden, da ein Tag nicht zwangsweise 86400 Sekunden lang ist. Man sollte besser [strtotime()](http://de3.php.net/strtotime) verwenden.  
        
      Gruß  
      Christoph Jeschke
      
      -- 
      Zend Certified Engineer
      
  3. echo $begrüßung;

    hab ein Datum aus ner MySQL DB in DATE-Form (also 2008-07-13). Möchte da gerne 48 Tage abziehen.

    Direkt in MySQL ginge das mit: datumsfeld - INTERVAL 48 DAY

    Wieso kann ich nicht einfach $datum = $datum - 48 machen? geht das irgendwie anders?

    Ja. Wenn du das in PHP berechnen willst, solltest du strtotime("$datum - 48 days") nehmen, denn das beachtet lokale Gesetzlichkeiten bei der Zeitzählung. Beispielsweise dass ein Tag nicht immer 24 Stunden hat. Das Ergebnis von strtotime() ist ein Unix-Timestamp, den du dann mit date() formatieren kannst.

    echo "$verabschiedung $name";