php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.07.2007, 20:50  
Benutzer
 
Registriert seit: 14.02.2006
Beiträge: 49
webazubi
Standard Datumsberechnung: x.ter Wochentag einer Monatswoche

Hallo. Komme nicht weiter und drehe mich im Kreis.
Ich mache Datumsbrechnungen wie

$datum = mktime(0,0,0,$datumarray["mon"]+ $intervall ,$datumarray["mday"],$datumarray["year"]);

Ich zähle also verschiedene Intervalle zum Datum hinzu. Nun möchte ich mir von einem Tag X (sagen wir Samstag, 7.April 2007) ausgehend den nächsten Wochentag im Folgemonat anzeigen lassen, an dem nicht nur der Wochentag stimmt (also Samstag), sondern wo auch die Woche stimmt (1. Woche des Monats).
Ergebnis müsste also sein: 5. Mai bzw. 2. Juni, also immer der erste Samstag des Monats. Wobei es natürlich nicht immer der 1. sein muss - welche Woche gesucht wird, speichere ich zusammen mit dem Datum, also beispielsweise $startdatum=07.04.2007 und $intervall =1 für die erste Woche, die gesucht wird.

Mein Ansatz bisher: Ich rechne erst mal einen Monat weiter (siehe Code oben) und vergleiche dann den gefundenen Wochentag mit dem Ersten des Monats. Ist der Wochentag kleiner oder größer muss ich anfangen zu addieren bzw. zu subtrahieren und wenn das Ergebnis dann im Vormonat liegt dann .... alles ziemlich umständlich und kompliziert sowie fehleranfällig und wenn es mal läuft, dann auch nur bei dem jeweiligen Datensatz und bei einem anderen Datum nicht mehr ((((

Ich hatte mal etwas davon gehört, dass man die Monatswochennummer mit einer Formel rauskriegen soll wie
floor((date('d',$startdatumswert)+3)/7));

Aber auch damit habe ich keine befriedigenden Ergebisse.

Kann mir jemand helfen?
webazubi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.07.2007, 21:19  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Zitat:
$datum = mktime(0,0,0,$datumarray["mon"]+ $intervall ,$datumarray["mday"],$datumarray["year"]);
Als "Fortgeschrittener" sollte dir die Möglichkeit der Code-Formatierung im Forum bekannt sein.

Banal gesagt: Eine Woche hat 7 Tage. Damit dürfte sich doch was machen lassen Rechnest einfach 4*7 Tage druff. Wenns noch in dem selben Monat fällt, rechnest eben nochmal 7 Tage drauf.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline   Mit Zitat antworten
Alt 30.07.2007, 23:25  
Benutzer
 
Registriert seit: 14.02.2006
Beiträge: 49
webazubi
Standard

Zitat:
Zitat von KingCrunch
Zitat:
$datum = mktime(0,0,0,$datumarray["mon"]+ $intervall ,$datumarray["mday"],$datumarray["year"]);
Rechnest einfach 4*7 Tage druff. Wenns noch in dem selben Monat fällt, rechnest eben nochmal 7 Tage drauf.
Aber so bekomme ich doch nicht heraus, ob das gefundene Datum der 1. oder 2. Samstag im Monat ist, sondern nur, welches Datum wir 4 oder 5 Wochen nach dem Startdatum haben, oder? Spätestens im Februar mit seinen 28 Tagen wäre das doch zu einfach.
webazubi ist offline   Mit Zitat antworten
Alt 30.07.2007, 23:39  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Na, dann sag doch einfach, was du haben willst ^^ Willste jetzt wissen, der wievielte Samstag in einem ein gegebenes Datum entspricht? Willste jetzt den xten Samstag in einem Monat?
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline   Mit Zitat antworten
Alt 30.07.2007, 23:57  
Benutzer
 
Registriert seit: 14.02.2006
Beiträge: 49
webazubi
Standard

Zitat:
Zitat von KingCrunch
Na, dann sag doch einfach, was du haben willst ^^ Willste jetzt wissen, der wievielte Samstag in einem ein gegebenes Datum entspricht? Willste jetzt den xten Samstag in einem Monat?
Kurz gesagt: Ich habe ein Datum an einem Sonnabend und will wissen, ob dieses der 1. Samstag eines Monats bzw. der zweite, dritte oder letzte Samstag eines Monats ist.
Beispielsweise für Veranstaltungen die jeden 2. Samstag eines Monats stattfinden. Oder für Termine, die am letzten Freitag eines Monats laufen (was nicht zwingend der 4. Freitag bzw. die vierte Woche sein muss).

Ich speichere dafür das Startdatum (und Enddatum). Aus dem Startdatum kann ich mir den Wochentag und die Nummer der Woche im Monat (Wochenmonatsnumer oder wie heißt das?) auslesen und will nun prüfen bzw. ausgeben, ob heute bzw. an einem Tag x dieser Termin stattfindet.
webazubi ist offline   Mit Zitat antworten
Alt 31.07.2007, 00:38  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Zitat:
Kurz gesagt: Ich habe ein Datum an einem Sonnabend und will wissen, ob dieses der 1. Samstag eines Monats bzw. der zweite, dritte oder letzte Samstag eines Monats ist.
PHP-Code:
<?php
$timestamp 
strtotime ($date); // erstmal timestamp draus machen

$dayOfWeek date ('l'$timestamp); // Damit haben wir den Wochentag
$dayInMonth = (int) ((date('j'$timestamp)-1) / 7); // Damit haben wir de xten Wochentag
?>
Herauszufinden, ob es der letzte oder vorletzte (oder was auch immer) seiner Art eines Monats ist, überlasse ich als Übungsaufgabe

Zitat:
Beispielsweise für Veranstaltungen die jeden 2. Samstag eines Monats stattfinden. Oder für Termine, die am letzten Freitag eines Monats laufen (was nicht zwingend der 4. Freitag bzw. die vierte Woche sein muss).
Der erste Montag muss auch nicht zwangsläufig in der ersten Woche liegen, weil date mit dem W-Flag die Wochennummer innerhalb eines Jahres ermittelt und dieses sich nicht an Monatsanfänge hält

Übrigens: Eine "Wochenmonatsnummer" gibt es nicht, hab ich auch noch auf keinem Kalender gesehen. Alle Wochennummern beziehen sich auf das Jahr und beginnen beim ersten Montag des Jahres.

Verschieb das mal jemand nach Anfänger, Danke.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Termin an einem festen Wochentag bockelmaenner PHP-Fortgeschrittene 2 15.02.2008 19:36
nächsten wochentag auslesen wizzardxx Datenbanken 8 30.03.2005 12:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
monatswoche, erste monatswoche, php vormonat berechnen, 13.08.2007 wochentag, monatswochen, 30.07.2007 wochentag, php monatswoche, monat woche, http://www.php.de/php-fortgeschrittene/44478-datumsberechnung-x-ter-wochentag-einer-monatswoche.html, datum berechnen php letzter samstag, php aus tag in woche ein datum berechnen, letzte monatswoche, strtotime größer 2 wochen kleiner 4 wochen, php wochentag berechnen, php berechne das datum von 2. samstag, php aktuelle monatswoche, mktime vorletzter samstag im, monatswoche berechnen, wochentag 30.07.2007, \erste monatswoche\

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.