| 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! |
 |
|

19-04-2011, 16:02
|
|
sepp
Registrierter Benutzer
|
|
Registriert seit: Aug 2007
Beiträge: 213
|
|
Tage ermitteln
Hallo zusammen,
Kann man gewisse Wochentage in einem bestimmten Zeitraum errechnen?
Wenn ich zum Beispiel alle Mittwoch als Datumanzeige im Zeitraum von August 2010 bis Juni 2011 ermitteln und darstellen möchte.
Stehe da auf dem Schlach, kann mir jemand einen Tip geben. Danke
Geändert von sepp (19-04-2011 um 16:05 Uhr)
|

19-04-2011, 16:07
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
strtotime ist sehr mächtig, probier mal z. B.
PHP-Code:
echo date('Y-m-d', strtotime('2011-04-11 next monday'));
das liefert dir z. B. den nächstmöglichen Montag nach dem 11. April (also gestern).
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

19-04-2011, 16:08
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Du ermittelst den ersten Mittwoch in August 2010 und addierst dann immer 7 Tage, bis du das Ende von Juni 2011 erreicht hast.
|

19-04-2011, 16:16
|
|
sepp
Registrierter Benutzer
|
|
Registriert seit: Aug 2007
Beiträge: 213
|
|
AmicaNoctis:
Spannende funktion ich lese mir einmal das Manuel durch.
h3ll:
Klingt logisch, wird aber zu Problem bei z.Bsp. Schaltjahren.
|

19-04-2011, 16:23
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von sepp
Klingt logisch, wird aber zu Problem bei z.Bsp. Schaltjahren.
|
Öhm, wieso? In Schaltjahren hat die Woche trotzdem 7 Tage.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

19-04-2011, 16:27
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von sepp
Klingt logisch, wird aber zu Problem bei z.Bsp. Schaltjahren.
|
Welches Problem? Eine Woche hat immer 7 Tage, auch in Schaltjahren.
|

19-04-2011, 16:27
|
|
sepp
Registrierter Benutzer
|
|
Registriert seit: Aug 2007
Beiträge: 213
|
|
Ja, aber der Februar hat nicht immer 29 Tage!
Sprich wenn ich immer mit 7 Addiere muss ich je monat nur addieren wenn < 30 oder 31 im Feb 29 und im Schaltjahr 28 nur wie kann ich das Schaltjahr ermitteln?
|

19-04-2011, 16:28
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von sepp
Ja, aber der Februar hat nicht immer 29 Tage!
Sprich wenn ich immer mit 7 Addiere muss ich je monat nur addieren wenn < 30 oder 31 im Feb 29 und im Schaltjahr 28 nur wie kann ich das Schaltjahr ermitteln?
|
Du musst gar nichts. Das macht doch PHP.
PHP-Code:
$date = new DateTime('2011-02-25'); $date->modify('+1 week'); echo $date->format('Y-m-d'); // 2011-03-04
$date = new DateTime('2012-02-25'); $date->modify('+1 week'); echo $date->format('Y-m-d'); // 2012-03-03
Geändert von h3ll (19-04-2011 um 16:31 Uhr)
|

19-04-2011, 16:29
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Du hast dich offenbar noch gar nicht mit Datumsberechnung beschäftigt. Wenn du 7 Tage addierst, machst du das natürlich nicht auf dem menschenlesbaren Datum sondern auf dem Unix-Timestamp, indem du ihn mit 7*24*60*60 addierst. Oder du nutzt wieder strtotime und übergibst "+7 day".
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

19-04-2011, 16:37
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von AmicaNoctis
Du hast dich offenbar noch gar nicht mit Datumsberechnung beschäftigt. Wenn du 7 Tage addierst, machst du das natürlich nicht auf dem menschenlesbaren Datum sondern auf dem Unix-Timestamp, indem du ihn mit 7*24*60*60 addierst.
|
_Dann_ hast du aber ein Problem, weil nicht jeder Tag 24 Stunden hat.
|

19-04-2011, 16:48
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von h3ll
_Dann_ hast du aber ein Problem, weil nicht jeder Tag 24 Stunden hat.
|
Jetzt geht das wieder los.  Die Schaltsekunde wird so eingefügt, als wäre sie nicht eingefügt worden. Die Schaltsekunde hat den gleichen UNIX-Timestamp wie die Sekunde davor. Die Vergangenheit wird dadurch geringfügig verändert, aber nicht die Zukunft. UNIX-Timestamps arbeiten immer mit einem Tag von 86400 Sekunden.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

19-04-2011, 16:49
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von AmicaNoctis
Jetzt geht das wieder los.  Die Schaltsekunde wird so eingefügt, als wäre sie nicht eingefügt worden. Die Schaltsekunde hat den gleichen UNIX-Timestamp wie die Sekunde davor. Die Vergangenheit wird dadurch geringfügig verändert, aber nicht die Zukunft.
|
Das Problem ist nicht die Schaltsekunde sondern die Winter-/Sommerzeit.
Zitat:
Zitat von AmicaNoctis
UNIX-Timestamps arbeiten immer mit einem Tag von 86400 Sekunden.
|
Das Problem ist auch nicht der UNIX-Timestamp, sondern der Zeitpunkt, wo du den Timestamp in ein lesbares Datum konvertierst. Hier wird der Fehler dann ersichtlich.
Geändert von h3ll (19-04-2011 um 16:51 Uhr)
|

19-04-2011, 16:51
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von h3ll
Das Problem ist nicht die Schaltsekunde sondern das Schaltjahr.
|
Auch da hat jeder Tag 86400 Sekunden, also 24 Stunden. Ich versteh nicht, was du willst. Gerade eben schriebst du, dass nicht jeder Tag 24 Stunden hat. Jetzt redest du von Schaltjahren. Bitte um Aufklärung.
Zitat:
Zitat von h3ll
Hier wird der Fehler dann ersichtlich.
|
Dann zeig mir das mal bitte.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

19-04-2011, 16:55
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
PHP-Code:
date_default_timezone_set('Europe/Vienna');
$date = strtotime('2011-10-24'); $date += 7 * 86400; // add 7 days
echo date('Y-m-d', $date); // 2011-10-30
24. Oktober + 7 Tage = 30. Oktober ???
PHP-Code:
date_default_timezone_set('Europe/Vienna');
$date = new DateTime('2011-10-24'); $date->modify('+7 days');
echo $date->format('Y-m-d'); // 2011-10-31
|

19-04-2011, 17:06
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Dieses Problem hat weder mit Schaltsekunden noch mit Schaltjahren zu tun, sondern ausschließlich mit dem zwischenzeitlichen Verlust der Zeitzoneninformation. Du hast mich überzeugt, dass es sicherer ist, mit "+7 days" zu arbeiten als mit Addition von Sekunden, aber deine Begründung hat mir zuerst nicht gefallen, weil sie vollkommen absurd klang (/war).
Wenn man dein Beispiel mit "Y-m-d Z" formatiert, sieht man das UTC Offset, das PHP zugrunde legt.
Ein Tag hat aber dennoch 24 Stunden, was ich mit enormer Beruhigung als bestätigt sehe
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|
|
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
|