Kalenderwochen eines Monats bestimmen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kalenderwochen eines Monats bestimmen

    Tach, Leude!

    Hat jemand eine Idee, wie man die Kalenderwochen eines ganz bestimmten Monats bestimmt? Also angedacht ist: Man wählt einen bestimmten Monat aus und es werden die jeweiligen Kalenderwochen des Monats zurückgegeben.

    Kleines Beispiel: Die Auswahl des Monats Mai im Jahr 2004 würde dazu führen, dass Folgendes ausgegeben wird:


    "Der Monat Mai des Jahres 2004 hat folgende Kalenderwochen:
    Kalenderwoche 18
    Kalenderwoche 19
    Kalenderwoche 20
    Kalenderwoche 21
    Kalenderwoche 22
    Kalenderwoche 23 "

    Ich hab mir schon etliche Seiten angeguckt, in denen es um Datums- und Kalenderwochenbestimmung u.ä. geht, aber die "simple" Frage, welche Kalenderwochen nun ein spezifischer Monat umfasst, wird leider nirgendwo erörtert. Hoffentlich habt ihr Euch mal damit auseinandergesetzt oder seid einfach von Haus aus clever genug, um ne Lösung für das Problemchen parat zu haben... Ich pack des irgendwie net.

    Danke vorab für Euren Input,

    Mr K

  • #2
    schaue dir mal date() im manual an.

    www.php.net/date
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Die Fallbeispiele auf der Seite mit der date-Funktion sind ja nicht uninteressant, aber wie genau soll mir das nun bei meinem Problem helfen?

      Kommentar


      • #4
        lies es noch einmal .. ;-)
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Geht's vielleicht auch ein bisschen konkreter?
          Zuletzt geändert von Kenshix; 08.07.2004, 15:46.

          Kommentar


          • #6
            ... soll der Grüne Abraxax sein ???

            *wegrenn*
            [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

            [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

            [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
            (from here)

            Kommentar


            • #7
              Original geschrieben von Kenshix
              Geht's vielleicht auch ein bisschen konkreter?
              W : ISO-8601 Wochennummer des Jahres, die Woche beginnt am Montag (hinzugefügt in PHP 4.1.0) : Beispiel: 42 (die 42 Woche im Jahr)
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Nee, ich fand das Smilie nur grad so witzig.

                Hier mal mein dilettantischer Lösungsansatz:

                PHP-Code:

                //Problem: Welche Kalenderwochen gehören zu einem bestimmten Monat des aktuellen Jahres?
                 
                $heutiger_tag=date('d');
                 
                $aktuelles_jahr=date('Y');
                 
                $holla=mktime(000$m1$aktuelles_jahr);
                 
                $huch=date('W'$holla);
                //$huch = erste KW des Monats
                 
                $kw_start=$huch;

                 
                $start=1;
                 
                 while ((
                $start+7)<=31 ){
                  
                $start=$start+7;
                 
                  
                $holla=mktime(0,0,0$m$start2004);
                  
                $huch2=date('W'$holla); $huch=$huch2;
                       }
                 if ((
                $start+7) < 31) { $huch2++;}
                  
                $kw_ende=$huch2;
                  
                 
                 echo 
                '<br><br>Start-Kalenderwoche:'.$kw_start.'   End-Kalenderwoche:'.$kw_ende.'<br><br>'
                Entschuldigt die bescheuerten Variablennamen, aber irgendwie fühle ich mich grad etwas matt... hüstel. Naja, jedenfalls bezweifle ich, dass das so zuverlässig funzt. Sieht man schon daran, dass ich davon ausgehe, dass der Monat 31 Tage hat, müsste also schonmal mindestens noch ne Routine einbauen, die ermittelt, wieviele Tage der Monat tatsächlich hat. Aber davon abgesehen - irgendwelche Verbesserungs-/Korrekturvorschläge, irgendjemand?

                Kommentar


                • #9
                  Original geschrieben von Kenshix
                  müsste also schonmal mindestens noch ne Routine einbauen, die ermittelt, wieviele Tage der Monat tatsächlich hat.
                  auch das kann date() dir verraten.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Und was spricht gegen den Parameter 'W' in Verbindung mit date()
                    *wie es Abraxax freundlicherweise gepostet hat*
                    [color=red]Geht nicht[/color] ist keine Fehlermeldung

                    Kommentar


                    • #11
                      Was meinst Du damit, Chief? Wieso sollte da irgendwas dagegen sprechen? Wer hat überhaupt angedeutet, dass da was dagegen sprechen könnte? Ich bin verwirrt. Aber das Problem mit den Kalenderwochen macht mich noch viel konfuser, das sieht nun (mit Tage per Monat - Bestimmung durch date (thnx für den Tipp, Abraxax)) so aus:

                      PHP-Code:
                      //Problem: Welche Kalenderwochen gehören zu einem bestimmten Monat des aktuellen Jahres?
                       //$heutiger_tag=date('d');
                       
                      $aktuelles_jahr=date('Y');
                       
                      $holla=mktime(000$m1$aktuelles_jahr);
                       
                      $huch=date('W'$holla);
                      //$huch = erste KW des Monats
                       
                      $kw_start=$huch;

                       
                      $start=1;
                       
                      $anzahl_monatstage=date('t');
                       
                       echo 
                      $anzahl_monatstage.' '.$aktuelles_jahr.' , KW '.$huch;
                       
                       while ((
                      $start+7)<= $anzahl_monatstage ){
                        
                      $start=$start+7;
                       
                        
                      $holla=mktime(0,0,0$m$start2004);
                        
                      $huch2=date('W'$holla); $huch=$huch2;
                             }
                       if ((
                      $start+7) < $anzahl_monatstage ) { $huch2++;}
                        
                      $kw_ende=$huch2;
                        
                       
                       echo 
                      '<br><br>Start-Kalenderwoche:'.$kw_start.'   End-Kalenderwoche:'.$kw_ende.'<br><br>'
                      Nur, es klappt einfach nicht. Kann mir jemand sagen, was ich ändern muss, damit es endlich zuverlässig die Kalenderwochen des Monats bestimmt? Mir gehen hier die Ideen aus.

                      Kommentar


                      • #12
                        warum denn so kompliziert?
                        Sei Monat und Jahr gegeben, mit mktime kannst du schon mal ein
                        timestamp für den 1. des Monats bauen => AnfangsKW des Monats.
                        Von hier aus bekommst du alles, nämlich: wie viele Tage der Monat hat,
                        und somit auch den letzten Tag des Monat => das letzte KW des Monats.
                        Dabei brauchst du nur 2 Fkt.:
                        - mktime
                        - date
                        keine Schleife. Max. 6 Programmzeilen. Also überlege mal.

                        Kommentar

                        Lädt...
                        X