Datum errechnen
Pete
- php
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
und ich habe das jetzt mal für max. 35 Tage eingerichtet.
Äh, 34 Tage meinte ich ;)
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?
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