lili: KW 52/53/01 (dieses oder nächstes Jahr?)

Gouden Tach!

Ich habe hier grad ein Problemchen mit der Kalenderwoche 52/53 und 01.
Die KW 01 liegt ja in diesem Jahr zB. auch mal in 07.

Ich finde ja derjenige der den Kalender erfunden hat, sollte erschossen werden... ach so der ist ja schon tot :D ..

Spaß bei Seite. <<

Ich möchte aber feststellen ob die KW 01 zum nächsten Jahr gehört?
Da es ja eine KW 01 in 07 schon gibt ?!?!

Ich würde einfach abfragen ob KW 01 im Dezember liegt, so gehört Sie wohl zum NÄCHSTEN Jahr.

Sollte es eine KW 53 geben gehört sie zu DIESEM jahr.
Liegt die KW 52 im nächsten Jahr (kann das überhaupt sein?), so gehört sie zu DIESEM Jahr.

Kann man das so machen?
lili

  1. Kann man das so machen?

    Mach es so wie es die anderen machen, das ist standardisiert:
    http://de.wikipedia.org/wiki/Kalenderwoche#Kalenderwoche

    1. Hi,

      Im Prinzip reicht es mir wenn man mir folgende Frage beantworten würde:
      Kann es sein, dass die KW

      51 im nächsten Jahr liegen könnte = nein
      52 im nächsten Jahr liegen könnte = ja
      53 im nächsten Jahr liegen könnte = ja
      01 in "diesem" Jahr liegen könnte = ja
      02 in "diesem" Jahr liegen könnte = nein
      bitte korrigieren, falls ich falsch liegen sollte!

      Ich beziehe mich da auf den UNIX-TIMESTAMP und dessen Rückgabewert
      Bsp:
      $timestamp = strtotime("2007-12-31");
      echo date("W",$timestamp);
      // KW = 01 , aber eben im Jahr 07

      Danke euch!
      lili :-x

      1. 51 im nächsten Jahr liegen könnte = nein
        52 im nächsten Jahr liegen könnte = ja
        53 im nächsten Jahr liegen könnte = ja
        01 in "diesem" Jahr liegen könnte = ja
        02 in "diesem" Jahr liegen könnte = nein
        bitte korrigieren, falls ich falsch liegen sollte!

        Du bist verwirrend...
        Also. In Deutschland ist KW1 die erte Woche die mindestens 4 Tage hat.

        Gut. Ich frage mich jetzt, was Du meinst. Woche? Du meinst einige Tage der Woche, oder? KW 1 eines Jahres ist natuerlich immer in diesem Jahr, da sie ja dadurch definiert wird, dass wenigstens 4 Tage davon aus dem entspr. Jahr sind. Im Umkehrschluss ist KW 52/53 immer am Ende des entspr. Jahres, sonst waere es KW 1 des naechsten. Einzelne Tage der Wochen koennen natuerlich eine Ausnahme bilden.

        Wie genau lautete nun also deine Frage, was verstehst du an unserem Kalender nicht?

        Ja, der 1. Januar dieses Jahres war noch in KW 53 des letzten Jahres.
        Ja, der 31. Dez eines Jahres kann in KW 1 des darauffolgenden Jahres liegen. Beantwortet das deine Frage? Falls ja, was gibt's denn da zu fragen?

        Ein Timestamp gibt dir doch das Jahr aus, zu dem dieser Tag gehoert.

        1. ich habe immer den Montag als Grundlage in "meinem System".
          So habe ich zb.
          24.12.07 = KW 52
          31.12.07 = KW 01
          07.01.08 = KW 02

          Ich plane aber Jahresübergreifend mit KalenderWochen.. Ich möchte als ergebnis folgendes mit meiner, noch nicht vollständigen, funktion erreichen:

          Übergabe | Return
          24.12.07 | 0752
          31.12.07 | 0801 // obwohl es ja eigentlich 0701 lauten müsste...
          07.01.08 | 0802

          ...0701 ist aber der 02.01.07

          also möchte ich in meiner funktion einfach noch ein paar abfragen einbauen..

          if ($kw == 01) dann checke ob $timestamp im DEZ liegt
          usw.

          lili

          1. Übergabe | Return
            24.12.07 | 0752
            31.12.07 | 0801 // obwohl es ja eigentlich 0701 lauten müsste...

            0801 ist doch richtig, mit dem 31.12.07 beginnt die 1.Kalenderwoche 2008

            0701 ist zufällig Mon, der 1.1.07

            gruß planB

          2. Übergabe | Return
            24.12.07 | 0752
            31.12.07 | 0801 // obwohl es ja eigentlich 0701 lauten müsste...
            07.01.08 | 0802

            ...0701 ist aber der 02.01.07

            also möchte ich in meiner funktion einfach noch ein paar abfragen einbauen..

            if ($kw == 01) dann checke ob $timestamp im DEZ liegt
            usw.

            Die Returns sind vollkommen korrekt. 31.12.07 ist KW 01/08. Auch nach deutscher Rechnung. (Ist ja leider nicht ueberall gleich...)

            Ich glaube ich habe Dein Problem verstanden. Dazu gehst Du einfach auf das naechste Wochenende und nimmst das dortige Jahr. Fuer Deutschland kannst du auch den Donnerstag nehmen. Dann brauchst Du keine wilden Konstruktionen. Die Woche des Montag wird dir korrekt geliefert und das Jahr holst Du Dir ueber nen anderen Tag. So kommst Du auch am 31.12.07 zu KF 01/08.

            Du solltest nur sicher gehen, das dein Programm auch mit den richtigen Regeln fuer das entspr. Land hantiert.

            Hoffe ich habe geholfen.

            1. N8,

              Die Returns sind vollkommen korrekt. 31.12.07 ist KW 01/08. Auch nach deutscher Rechnung. (Ist ja leider nicht ueberall gleich...)

              ach ja? bist du sicher? oder bin ich jetzt durcheinander?

              Mein Problem ist doch nicht neu, denke ich mal...
              Ich möchte einfach wissen in welches Jahr ich die KW stecken soll?!

              Es gibt die KW 53 die im NÄCHSTEN Jahr Hängt, obwohl Sie zu DIESEM gehört und
              Es gibt die KW 01 die in DIESEM Jahr Hängt, obwohl Sie zum NÄCHSTEN Gehört.

              !Ich möchte eine Funktion basteln die genau das unterscheidet!

              Schaut mal hier:
              Überall wo ich ein < eingebaut habe, würde die "Donnerstag"-Theorie funktionieren. Tut Sie aber leider nicht (X)!

              -----
              Jahr: 2001 Anfang des Jahres: Mon, 01.01.01
              (24.12.01) Mon / 52 # (27.12.01) Thu / 52
              (31.12.01) Mon / 01 # (03.01.02!) Thu / 01 <
              (07.01.02) Mon / 02 # (10.01.02) Thu / 02

              Jahr: 2002 Anfang des Jahres: Mon, 07.01.02
              (23.12.02) Mon / 52 # (26.12.02) Thu / 52
              (30.12.02) Mon / 01 # (02.01.03) Thu / 01 <
              (06.01.03) Mon / 02 # (09.01.03) Thu / 02

              Jahr: 2003 Anfang des Jahres: Mon, 06.01.03
              (22.12.03) Mon / 52 # (25.12.03) Thu / 52
              (29.12.03) Mon / 01 # (01.01.04) Thu / 01 <
              (05.01.04) Mon / 02 # (08.01.04) Thu / 02

              Jahr: 2004 Anfang des Jahres: Mon, 05.01.04
              (20.12.04) Mon / 52 # (23.12.04) Thu / 52
              (27.12.04!) Mon / 53 # (30.12.04!) Thu / 53 X
              (03.01.05) Mon / 01 # (06.01.05) Thu / 01
              -----

              Der PHP-Code:

              <?
              for($j=2001;$j<2010;$j++)
              {
               echo "<b>Jahr: $j</b> ";
               $adj = strtotime("Monday",strtotime("$j-01-01")); # anfang des Jahres
               echo "Anfang des Jahres: ".date("D, d.m.y",$adj)."<br>";

              for($w=50;$w<54;$w++)
               {

              $newtime = strtotime("+".$w."Week",$adj);
                $donnerstag = strtotime("+3 Days", $newtime);
                echo date("(d.m.y) D / W",$newtime)." # ";
                echo date("(d.m.y) D / W",$donnerstag)."<br>";
               }
               print "<hr>";
              }
              ?>

              lili

              1. merk ich noch was?
                Klar geht das so :D

                Jahr: 2001 Anfang des Jahres: Mon, 01.01.01
                (24.12.01) Mon / 52 # (27.12.01) Thu / 52
                (31.12.01) Mon / 01 # (03.01.02!) Thu / 01 <
                (07.01.02) Mon / 02 # (10.01.02) Thu / 02

                Jahr: 2002 Anfang des Jahres: Mon, 07.01.02
                (23.12.02) Mon / 52 # (26.12.02) Thu / 52
                (30.12.02) Mon / 01 # (02.01.03) Thu / 01 <
                (06.01.03) Mon / 02 # (09.01.03) Thu / 02

                Jahr: 2003 Anfang des Jahres: Mon, 06.01.03
                (22.12.03) Mon / 52 # (25.12.03) Thu / 52
                (29.12.03) Mon / 01 # (01.01.04) Thu / 01 <
                (05.01.04) Mon / 02 # (08.01.04) Thu / 02

                Jahr: 2004 Anfang des Jahres: Mon, 05.01.04
                (20.12.04) Mon / 52 # (23.12.04) Thu / 52
                (27.12.04) Mon / 53 # (30.12.04) Thu / 53 < ist doch richtig ^^
                (03.01.05) Mon / 01 # (06.01.05) Thu / 01 <

                Oh mann, danke
                lili

                1. Oh mann, danke
                  lili

                  Oh... is mir eben auch nicht aufgefallen... Is schon spaet. Ich brauch Feierabend. :) Haette ich mir ja den ganzen Sermon eben sparen koennen... *seuftz*

                  nuja. freut mich geholfen zu haben. :D

                  1. ... Is schon spaet. Ich brauch Feierabend. :) Haette ich mir ja den ganzen Sermon eben sparen koennen... *seuftz*

                    nuja. freut mich geholfen zu haben. :D

                    Joa Danke ;)

                    Aber ist schon echt krass was um diese Uhrzeit hier noch los ist. freut mich!

              2. Hoi,

                International gilt: KW 1 ist die erste Woche die mindestens 4 Tage des neuen Jahres enthaelt. Eine Woche beginnt immer am Montag. Das Problem, das bei php vielleicht greift: Das gilt vielleicht international abernicht in den USA, Israel, arab. Staaten...

                In den USA gilt: 1. Januar ist Beginn der 1. KW (egal welcher Tag) und die Woche faengt am Sonntag an. Sollte php auch so rechnen (wie die meisten Programmiersprachen das wohl standardmaessig tun) kommen da fuer Deutschland falsche Werte raus. Ich kann das hier nicht pruefen, aber Du sicherlich. :)

                In VBA (und VBScript) z.B. gibt es gluecklicherweise Parameter die das Verhalten von Datumsfunktionen beinflussen. In JS z.B. ist es kein Spass sowas zu programmieren. (falls jemand da mehr weiss, waehre ich sehr dankbar fuer Infos)

                Wie es bei PHP genau aussieht, kann ich leider nicht sagen. Auch nachschlagen musst Du schon selbst. Vielleicht denk ich dran und hab spaeter noch Lust mal nachzuschauen.

  2. hallo,

    eine neue Kalenderwoche beginnt am Montag
    der 1. Montag im neuen Jahr ist der Beginn der 1. Kalenderwoche

    Reichen diese Definitionen nicht oder liege ich da falsch?

    Gruß planB

    1. Servus,

      eine neue Kalenderwoche beginnt am Montag
      der 1. Montag im neuen Jahr ist der Beginn der 1. Kalenderwoche

      Falsch. Das wäre ja dann der 07.01.08 und das ist KW 2

      lili

    2. eine neue Kalenderwoche beginnt am Montag
      der 1. Montag im neuen Jahr ist der Beginn der 1. Kalenderwoche

      Reichen diese Definitionen nicht oder liege ich da falsch?

      Du liegst falsch. Die erste Woche ist die, mit mindestens 4 Tagen aus dem neuen Jahr.

  3. Gouden Tach!

    Ich habe hier grad ein Problemchen mit der Kalenderwoche 52/53

    Du suchst DIN 1355.

    --roro