datum
Jürgen
- php
Hallo,
ich möchte von eingen bestimmten anfangsdatum an zb. 3.6.2008 die nächsten 7 tage haben als datum haben:
also 4.6.2008, 5.6.2008,6.62008,...,10.6.2008,
wie mache ich das?
Jürgen
Hi,
wie mache ich das?
mit einer Schleife und dem Wissen, dass die meisten Tage des Jahres 86400 Sekunden besitzen.
Cheatah
hallo,
also das mit der schleife kriege ich noch hin aber wie adiere ich zu einem datum im format $tag_anfang="2008-06-04" + 86400 sekunden?
Jürgen
Hi,
also das mit der schleife kriege ich noch hin aber wie adiere ich zu einem datum im format $tag_anfang="2008-06-04" + 86400 sekunden?
PHP ist kein Mensch und hat keine Assoziationen, die es ahnen lassen, was wohl gemeint sein könnte - wenn Du programmierst, denke also wie die Maschine: Das ist kein Datum, sondern ein String. Obige Addition ist jedoch nur bei einem Datum sinnvoll.
Cheatah
echo $begrüßung;
also das mit der schleife kriege ich noch hin aber wie adiere ich zu einem datum im format $tag_anfang="2008-06-04" + 86400 sekunden?
Es gibt auch noch strtotime(). Damit kann man das ungefähr so notieren, und man kann gleich einen Tag nehmen und muss sich nicht mit ungenauen Sekundenangaben rumschlagen: strtotime("2008-06-04 +1day")
echo "$verabschiedung $name";
echo $begrüßung;
mit einer Schleife und dem Wissen, dass die meisten Tage des Jahres 86400 Sekunden besitzen.
Achwas, warum eine nicht immer richtige Angabe - vielleicht noch mit ausgleichendem Code dazu - verwenden, wenn es mktime() gibt? Und das DateTime-Objekt mit seiner Methode modify() ist auch vorhanden.
echo "$verabschiedung $name";
Hi!
»»Und das DateTime-Objekt mit seiner Methode modify()
kann man verwenden, wenn man von PHP in der Version 5.1.0 oder höher ausgeht und nicht abwärtskompatibel sein muss/will.
off:PP
Hi,
mit einer Schleife und dem Wissen, dass die meisten Tage des Jahres 86400 Sekunden besitzen.
Achwas, warum eine nicht immer richtige Angabe - vielleicht noch mit ausgleichendem Code dazu - verwenden, wenn es mktime() gibt?
die von mir genannten Angaben sind - verbunden mit einem Minimum an Geschick - ausreichend, um mit einmaliger Anwendung von mktime() einen sehr simplen, sehr gut les- und wartbaren, jederzeit[1] funktionierenden Code mit geringstmöglichen Aufwänden zu erzeugen.
Und das DateTime-Objekt mit seiner Methode modify() ist auch vorhanden.
Siehe Peters Antwort.
Cheatah
[1] Nun ja, vorausgesetzt Datumsumstellungen wie beim Wechsel zum Gregorianischen Kalender sind kein Use-Case.
echo $begrüßung;
mit einer Schleife und dem Wissen, dass die meisten Tage des Jahres 86400 Sekunden besitzen.
Achwas, warum eine nicht immer richtige Angabe - vielleicht noch mit ausgleichendem Code dazu - verwenden, wenn es mktime() gibt?die von mir genannten Angaben sind - verbunden mit einem Minimum an Geschick - ausreichend, um mit einmaliger Anwendung von mktime() einen sehr simplen, sehr gut les- und wartbaren, jederzeit[1] funktionierenden Code mit geringstmöglichen Aufwänden zu erzeugen.
Ja, aber warum Sekunden nehmen, wenn Tage gefragt waren? Mir suggerierte deine Antwort, dass man mit Sekunden rechnen soll, dass also auch das Ausgangsdatum in Sekunden umzurechnen wäre. Auf diese Weise ergäbe das auch keinen Anwendungsfall für mktime(). mktime() - ich vergaß es explizit zu erwähnen, es steht jedoch auf der Handbuch-Seite - geht bei ungültigen Werten davon aus, dass es einen richtigen Wert berechnen soll. So ergibt sich
mktime(0, 0, 0, 6, 3, 2008); // 3.6.
mktime(0, 0, 0, 6, 3 + 1, 2008); // 4.6.
mktime(0, 0, 0, 6, 3 + 2, 2008); // 5.6.
mktime(0, 0, 0, 6, 3 + 3, 2008); // 6.6.
usw. für den OP-Beispiel-Anwendungsfall. Soweit kein Problem, die übergebenen Werte stellen ja ein gültiges Datum dar. Doch selbst beim Monatswechsel ergibt sich nach dem Prinzip ein gültiger und gewünschter Wert.
mktime(0, 0, 0, 6, 29, 2008); // 29.6.
mktime(0, 0, 0, 6, 29 + 1, 2008); // 30.6.
mktime(0, 0, 0, 6, 29 + 2, 2008); // 1.7.
mktime(0, 0, 0, 6, 29 + 3, 2008); // 2.7.
Und das DateTime-Objekt mit seiner Methode modify() ist auch vorhanden.
Siehe Peters Antwort.
Mit der gleichen Argumentation könnte man mktime() ablehnen, weil das nicht kompatibel zu PHP3 ist. Der OP hat keine Vorgaben zur PHP-Version gemacht und PHP4 ist mittlerweile abgekündigt. Man muss bei jeder verwendeten Funktion prüfen, ob die in der zu verwendeten Version vorhanden ist, nicht nur bei den in 5.x eingeführten.
echo "$verabschiedung $name";