| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

17-11-2009, 13:29
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
Datum der nächsten 14 Tage ausgeben
Hallo,
ich versuche grade ein Script zu schreiben mit dem ich ein Dropdownmenue füttern möchte. Es sollen jeweils die Tage als Datum angegeben werden und zwar die nächsten 14 Tage im Kalender.
Ich habe mir überlegt das ganze mit Mktime zu machen aber was passiert wenn in den nächsten 14 Tagen ein Monats oder Jahreswechsel ansteht
Vielleicht hat ja jemand einen guten Vorschlag.
|

17-11-2009, 13:41
|
|
sanktusm
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Beiträge: 558
|
|
Ok habs gelöst
<?php
$datum = time();
$limit = time() + 1209600;
while($datum < $limit) {
echo date("d.m.y", $datum)."<br>";
$datum = $datum + 86400;
}
?>
|

17-11-2009, 13:52
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
keine Sorge, dafür ist mktime bestens geeignet, weil es den Überlauf automatisch verrechnet. Wenn du es mit dem 32.12.2009 fütterst, macht es den 01.01.2010 draus.
Gruß,
Amica
|

17-11-2009, 14:00
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Schöner ist es mit strtotime zu arbeiten:
PHP-Code:
echo strtotime('+12 days', time());
Warum? Weil du damit "magic numbers" verhinderst. Das sind Zahlen, von denen kein Mensch weiß, was sie bedeuten sollen, bzw. deren Bedeutung nicht aus sich selbst ersichtlich ist.
|

17-11-2009, 14:37
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von sanktusm
<?php
$datum = time();
$limit = time() + 1209600;
while($datum < $limit) {
echo date("d.m.y", $datum)."<br>";
$datum = $datum + 86400;
}
?>
|
Das ist falsch. Nicht jeder Tag hat 86400 Sekunden.
Ich würde die Methode von unset empfehlen.
|

17-11-2009, 15:26
|
|
DonManfred
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 80
|
|
Zitat:
Zitat von h3ll
Das ist falsch. Nicht jeder Tag hat 86400 Sekunden.
|
Nicht? Welcher Tag ist denn kürzer oder länger?
Also mir kommt der Sonntag auch immer kürzer vor als der Montag (arbeiten) aber das es wirklich so ist, war mir nicht bewusst!
|

17-11-2009, 15:29
|
|
Slava
PHP Senior
|
|
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.583
|
|
Zitat:
Zitat von h3ll
Das ist falsch. Nicht jeder Tag hat 86400 Sekunden.
|
Ja, aber das hat keine Auswirkung auf die angeforderte Datumsanzeige,
also so wie er es gemacht hat, ist es richtig.
|

17-11-2009, 15:33
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Zitat:
Zitat von DonManfred
Nicht? Welcher Tag ist denn kürzer oder länger?
Also mir kommt der Sonntag auch immer kürzer vor als der Montag (arbeiten) aber das es wirklich so ist, war mir nicht bewusst!
|
Zeitumstellungen kennst du aber schon, oder? Und je nach dem, wann dein Script ausgeführt wird, kann das zu unschönen Nebeneffekten führen.
Abgesehen davon redest du doch die ganze Zeit explizit vom Datum und nicht von einer sekundengenauen Uhrzeit …*warum arbeitest du dann in dieser Dimension?
|

17-11-2009, 15:36
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Richtig?
PHP-Code:
for($i=1;$i<=14;++$i)
{
echo date('d.m.Y',strtotime("+$i DAYS"))."<br>";
}
|

17-11-2009, 16:04
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von DonManfred
Nicht? Welcher Tag ist denn kürzer oder länger?
|
Der 25. Oktober hat 90000 Sekunden und der 29. März hat 82800 Sekunden.
Zitat:
Zitat von Slava
Ja, aber das hat keine Auswirkung auf die angeforderte Datumsanzeige
|
Doch, hat es.
PHP-Code:
// $datum = time();
$datum = strtotime("2009-10-22"); // Heute ist der 22. Oktober
$limit = time() + 1209600;
while($datum < $limit) {
echo date("d.m.y", $datum)."<br>";
$datum = $datum + 86400;
}
Code:
22.10.09
23.10.09
24.10.09
25.10.09
25.10.09
26.10.09
27.10.09
28.10.09
[...]
Fällt dir was auf?
Geändert von unset (17-11-2009 um 16:19 Uhr)
Grund: doppelpost
|

17-11-2009, 16:18
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Zitat:
Zitat von combie
Richtig?
PHP-Code:
for($i=1;$i<=14;++$i)
{
echo date('d.m.Y',strtotime("+$i DAYS"))."<br>";
}
|
Bist du betrunken?
|

17-11-2009, 16:55
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
Zitat von unset
Bist du betrunken? 
|
Selbst wenn, wie kommst du darauf?
|

17-11-2009, 17:05
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Zitat:
Zitat von combie
Selbst wenn, wie kommst du darauf?
|
|

17-11-2009, 17:06
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ob ++$i oder $i++ ist an der Stelle doch wurscht.
|

17-11-2009, 17:07
|
|
DonManfred
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 80
|
|
Zitat:
Zitat von unset
Zeitumstellungen kennst du aber schon, oder? Und je nach dem, wann dein Script ausgeführt wird, kann das zu unschönen Nebeneffekten führen.
|
Aehmm... OUPS. Yo, da hab ich ja gar nicht dran gedacht :-)
Zitat:
Zitat von unset
Abgesehen davon redest du doch die ganze Zeit explizit vom Datum und nicht von einer sekundengenauen Uhrzeit …*warum arbeitest du dann in dieser Dimension?
|
Ich? Wie kommst Du nun auf mich? Ich habe hier in dem thread (vor diesem hier) genau EINEN Kommentar geschrieben (eben den, den Du kommentiertest). Hab ich irgendwas verpasst??
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|