Pete: Datum errechnen

Hi Forum,

ich möchte in einem Text ein "Datum-Template" durch ein Datum ersetzen.

Das mache ich wie folgt erfolgreich:

  
$text = "Bla bla bla %Datum_plus_7% bla bla";  
  
for($count = 1; $count < 35; $count++) {  
$var = "in_".$count;  
$$var = $heute_null_uhr+$count*86400+2; // 2 Sicherheitssekunden, um im nächsten Tag zu sein  
$datum = date("d.m.Y", $$var);  
$text = str_replace("%Datum_plus_".$count."%", $datum, $text);  
}  
  

Ergibt:

Bla bla bla 27.03.2013 bla bla

und ich habe das jetzt mal für max. 35 Tage eingerichtet.

Frage:

Kann man das schöner oder effizienter programmieren?

Pete

  1. und ich habe das jetzt mal für max. 35 Tage eingerichtet.

    Äh, 34 Tage meinte ich ;)

  2. Hi,

    $text = "Bla bla bla %Datum_plus_7% bla bla";

    for($count = 1; $count < 35; $count++) {
    $var = "in_".$count;
    $$var = $heute_null_uhr+$count*86400+2; // 2 Sicherheitssekunden, um im nächsten Tag zu sein
    $datum = date("d.m.Y", $$var);
    $text = str_replace("%Datum_plus_".$count."%", $datum, $text);
    }

      
    
    > Kann man das schöner oder effizienter programmieren?  
      
    Sowohl als auch.  
      
    Zum einen solltest du nicht 86400 Sekunden addieren – das kann leicht Probleme geben mit der Zeitumstellung. Nutze strtotime oder DateTime::add, um Tage zu addieren.  
      
    Und zum anderen bietet es sich hier an, nicht für x Möglichkeiten das Datum zu errechnen und zu suchen ob es was zu ersetzen gibt – sondern das ganze per Mustersuche (reguläre Ausdrücke) zu machen, um die "7" im Beispiel als Parameter nutzen zu können.  
      
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Zum einen solltest du nicht 86400 Sekunden addieren – das kann leicht Probleme geben mit der Zeitumstellung. Nutze strtotime oder DateTime::add, um Tage zu addieren.

      Und zum anderen bietet es sich hier an, nicht für x Möglichkeiten das Datum zu errechnen und zu suchen ob es was zu ersetzen gibt – sondern das ganze per Mustersuche (reguläre Ausdrücke) zu machen, um die "7" im Beispiel als Parameter nutzen zu können.

      Hi Chris,

      2 gute Ideen!
      Danke, ich werds morgen umsetzen und hier posten, vielleicht wirfst Du dann noch nen Blick drüber.
      Pete