Kalenderwoche Datum rausfinden

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

  • Kalenderwoche Datum rausfinden

    Hallo,

    ich habe folgendes Problem.

    Ich möchte gerne eine Select-Box haben, wo die aktuellen Kalenderwochen von dem aktuellen Jahr drin stehen.
    Zum Beispiel: 1, 2, 3, 4, 5 ... 50, 51, 52

    Das sollte alles untereinander stehen, damit ich eine Zahl mit der Select-Box auswählen kann. Wobei manche Jahre ja auch 53 KW haben.

    Das wichtigste ist nun, wenn ich diese Zahl auswähle und auf abschicken klicke, soll auf der nächsten Seite ermittelt werden, von wann bis wann die Kalenderwoche geht.

    Beispiel: Ich wähle Kalenderwoche 37 --> die geht vom 10.09.2003-16.09.03

    Hat jemand nen Code für so was?
    Danke schon mal.


    Gruß
    Svenner.

  • #2
    Re: Kalenderwoche Datum rausfinden

    Original geschrieben von Svenner
    Wobei manche Jahre ja auch 53 KW haben.
    das kriegst du ja leicht raus. du erzeugst dir den 31.12. des jahres als timestamp, und lässt dir dann mit date("W") die wochennummer ausgeben.
    dann eine schleife von 1 bis zu dieser wochennummer, um dein select-feld aufzubauen.

    für den rest: na ja, überleg dir halt mal was :-)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hi,

      gut habe es jetzt wie folgt:
      PHP-Code:
      <?php
      $jahr 
      date("Y");
      $zeit mktime(0,0,0,12,28,$jahr);

      $woche date("W",$zeit);
      echo 
      $woche;
      ?>
      <select name="sec">
       <?php
       
      for ($i=1$i<=$woche$i++)
       {
           echo 
      "<option value=$i>$i</option>";
       }
      ?>
      </select>
      Doch wie ich dann das Datum von der jeweiligen Kalenderwoche (von - bis), die ich ausgewählt habe, bekomme, weiß ich nicht und wäre für Hilfe sehr sehr dankbar.


      Svenner.

      Kommentar


      • #4
        Montag der Kalenderwoche $woche in Jahr $jahr:
        PHP-Code:
        $kw1 mktime(0,0,0,1,4,$jahr); // der 4.1. liegt garantiert in der 1. KW
        $montag $kw1 86400 * (
          
        7*($woche-1// $woche-1 Wochen drauf
          
        date('w'$kw1)+// und Tage bis zum Montag abziehen
        );
        $sonntag $montag 86400*6// 6 Tage drauf: Sonntag 
        Dann bekommst du die passenden Daten mit date('d.m.Y', $montag) und date('d.m.Y', $sonntag).
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          ja das ist gut, aber wenn ich jetzt die kw=37 habe, wie bekomme ich einen tag, der in der kw=37 ist raus oder das datum von - bis.

          ein einziger tag würde ja nach deinem script her reichen.

          danke.

          Kommentar


          • #6
            Original geschrieben von Svenner
            ja das ist gut, aber wenn ich jetzt die kw=37 habe, wie bekomme ich
            einen tag, der in der kw=37 ist raus oder das datum von - bis.
            Ich weiß nicht, warum ich darauf noch antworte ...
            GENAU DAS hab ich doch da oben gepostet!

            Ich seh ja ein, dass manche Leute hier keine Ahnung von PHP und noch
            weniger Ahnung vom Programmieren haben; aber ich setze voraus, dass
            unsere Besucher LESEN können und das auch tun.
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              @Titus: VIELEN DANK FÜR DEIN SCRIPT!!!!!!! Es funktioniert wunderbar :-)

              Nur ein kleiner Hinweis: Wenn ein Jahr 53 KWs hat, und man sich genau in dieser KW 53 befindet, muss man bevor man das ganze Script ausführt, KW auf 52 setzen, weil man sonst eine Woche weiter ist. Aber sonst perfekt! 2004/2005, 2005/2006 und 2006/2007 getestet...

              Für alle, die nochmal nach dem Thema suchen:
              Dass der 4. auf jeden Fall in der ersten KW liegt, ist hier begründet
              "(KW ist...) die erste Woche, in die mindestens vier Tage des neuen Jahres fallen (ISO 8601)." (Quelle: wikipedia)

              Warum man jetzt hier einen Tag dazu und da einen abzieht habe ich noch nicht 100% kapiert, aber hauptsache, es funktioniert :-)

              Kommentar


              • #8
                Wenn der 4. ein Sonntag ist (so wie dieses Jahr), muss man 6 abziehen und nicht date('w', $kw1)+1, sonst rutscht das ganze immer eine Woche nach vorn.

                Kommentar


                • #9
                  Hey,
                  danke für diesen Thread!

                  Aber, eine Frage:

                  Wenn man im Falle einer KW 53 das Ganze auf KW 52 ändern muss, was mache ich dann, um in die "echte" KW 52 zu kommen?
                  Gebe ich dafür dann KW 51 an? Wie komme ich dann in die echte 51 usw.?

                  Das kann ja nicht funktionieren.

                  Oder ist das eine "Falschinformation" und es gibt keine Probleme, wenn man den letzten Tipp beachtet mit 6 Tage abziehen wenn der 04. ein Sonntag ist?

                  Danke

                  Kommentar


                  • #10
                    Gegenfrage: Was ist daran so schwer hier nach "date" zu suchen und das Ergebnis zu lesen!?
                    WHILE (!$asleep) { $sheep++; }

                    Kommentar


                    • #11
                      Und hier noch eine Veriante, wenn du es manuel machen willst. (testen musst du es selbst )
                      PHP-Code:
                      // returns the UNIX timestamp of the given day of week
                      function getDayOfWeekasTime($day$month$year$dayOfWeek){
                        
                      $time =  mktime(000$month$day$year);
                        
                      $time += ($dayOfWeek - (date("w") + 6) % 7) * 3600 24;
                        return 
                      $time;
                      }

                      // returns false if invalid or
                      // the first day of the given week as a UNIX timestamp
                      function getWeekasTime($week$year){
                       if(
                      $year 1980 || $year 2030 || $week || $week 52){return false;}
                       
                      $time getDayOfWeekasTime(41$year3);
                       
                      $time += 24 3600 $week;
                       
                      d.setDate(d.getDate() + week);
                       if(
                      $week == 52 && $year != date("Y"$time)){
                        return 
                      false;
                       }
                       return 
                      $time -= 24 3600;
                      }

                      // returns the calendar week 0-52 of a given date
                      function getCalendarWeek($day$month$year){
                       
                      $calendarWeek 0;
                       
                      $time getDayOfWeekasTime($day$month$year3);
                       
                      $year date("Y"$time);
                       while(
                      $year == date("Y"$time){
                        
                      $calendarWeek++;
                        
                      $time -= 24 3600;
                       }
                       if(
                      date("Y"getDayOfWeekasTime($day$month$year3)) != $year){
                        if(
                      $calendarWeek == 0){
                         
                      $calendarWeek++;
                        }else if(
                      $calendarWeek == 52){
                         
                      $calendarWeek--;
                        }
                       }
                       return 
                      $calendarWeek;

                      Kommentar


                      • #12
                        Zitat von nichtsooft Beitrag anzeigen
                        Gegenfrage: Was ist daran so schwer hier nach "date" zu suchen und das Ergebnis zu lesen!?
                        Ich kenne die Date-Funktion, aber darum geht es nicht.

                        Kommentar


                        • #13
                          Zitat von jmc Beitrag anzeigen
                          PHP-Code:
                          (date("w") + 6) % 7
                          Warum nimmst du nicht einfach date("N")?

                          ISO-8601 numeric representation of the day of the week
                          1 (for Monday) through 7 (for Sunday)

                          Kommentar


                          • #14
                            Weil ich das direkt hier im Forum geschrieben, nicht lange überlegt und das nicht auswendig gewusst habe

                            Kommentar

                            Lädt...
                            X