DaDomsen: Textwechsel bei ungreaden Tagen

Hallo,
versuche schon seit Tagen einen Text Wechsel zu bauen. Über getDay klappt es halt für eine Woche, aber nicht so wie ich das gerne hätte. Ich möchte gerne einen Wechsel zwischen Text A und Text B der täglich wechselt.Das ganze Jahr über....

Wenn mir da jemand helfen kann wäre ich glücklich.

Vielen Dank

Dominic

  1. @@DaDomsen:

    nuqneH

    Hallo,
    versuche schon seit Tagen einen Text Wechsel zu bauen. Über getDay klappt es halt für eine Woche, aber nicht so wie ich das gerne hätte. Ich möchte gerne einen Wechsel zwischen Text A und Text B der täglich wechselt.Das ganze Jahr über....

    Na, welche Methoden bietet das http://de.selfhtml.org/javascript/objekte/date.htm@title=Date-Objekt denn noch so?

    getDay() ist recht ungeeignet, da nach 6 (Sa) wieder eine gerade Zahl 0 (So) folgt.

    http://de.selfhtml.org/javascript/objekte/date.htm#get_date@title=getDate() wäre da schon passender – zumindest für Monate mit einer geraden Anzahl von Tagen (28 oder 30) folgt nach dem letzten dann die ungerade 1, bei Monaten mit einer ungeraden Anzahl von Tagen (29 oder 31) folgen zwei ungerade aufeinander. Auch nicht das, was du willst.

    Eine Methode, die die Nummer des Tages im Jahr liefert, hat das Date-Objekt nicht. (Aber selbst wenn, auch da wäre das Problem am Jahreswechsel bei Nicht-Schaltjahren.)

    Für dich interessant ist nicht das Datum, sondern der Zeitpunkt: http://de.selfhtml.org/javascript/objekte/date.htm#get_time@title=getTime(). Musst nur die Millisekunden in Tage umrechnen.

    Qapla'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
    1. Danke für deine schnelle Antwort.

      Habe ich mir auch schon überlegt,hatte das aber das jedesmal wenn die Seite neu aufgerufen wurde die Zeit neu beginnt. Läuft die Zeit den bei getTime auch im hintergrund weiter, so das wenn ich Heute gucke Text A steht und morgen Text B?

      Kann man die getDay funktion nicht irgendwie auf zwei Wochen erweitern?

      Das Problem ist das der Text sich immer von Tag zu Tag abwechseln soll. Wenn ich das Einmal im Jahr neu schreiben muss würde ich das auch mit der Jahresfunktion in kauf nehmen. Leider weiß ich nicht wie!!!

      1. Hallo,

        Habe ich mir auch schon überlegt,hatte das aber das jedesmal wenn die Seite neu aufgerufen wurde die Zeit neu beginnt.

        muss ich das verstehen? Täglich grüßt das Murmeltier?

        Läuft die Zeit den bei getTime auch im hintergrund weiter, so das wenn ich Heute gucke Text A steht und morgen Text B?

        Die Methode getTime() liest den in einem Date-Objekt gespeicherten Zeitstempel und liefert ihn als "Millisekunden seit 01.01.1970" zurück. Also brauchst du nur noch ein Date-Objekt, das die aktuelle Zeit enthält. Klar soweit?

        Kann man die getDay funktion nicht irgendwie auf zwei Wochen erweitern?

        Was für ein Problem hast du, von Millisekunden in Tage umzurechnen? Oder scheiterst du eher an der Frage, ob eine Zahl gerade oder ungerade ist? - Dafür gibt's zwei Methoden: Entweder die Division modulo 2, oder eine bitweise AND-Verknüpfung mit 1.

        Kommst du jetzt weiter? Wenn nein, beschreibe dein Problem konkret.

        So long,
         Martin

        --
        Einer aktuellen Erhebung zufolge sind zehn von neun Ehefrauen eifersüchtig auf ihren Mann.
        1. @@Der Martin:

          nuqneH

          Was für ein Problem hast du, von Millisekunden in Tage umzurechnen? Oder scheiterst du eher an der Frage, ob eine Zahl gerade oder ungerade ist?

          Wobei man beides gleich verbinden kann: Wenn man schon beim Dividieren ist, dann auch gleich noch durch 2 und dann den Nachkommaanteil mit 0.5 vergleichen.

          Qapla'

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
          1. Hallo,

            Was für ein Problem hast du, von Millisekunden in Tage umzurechnen? Oder scheiterst du eher an der Frage, ob eine Zahl gerade oder ungerade ist?
            Wobei man beides gleich verbinden kann: Wenn man schon beim Dividieren ist, dann auch gleich noch durch 2 und dann den Nachkommaanteil mit 0.5 vergleichen.

            das ist gut! Okay, jetzt biste wieder in der Spur! ;-)

            Ciao,
             Martin

            --
            Ich bin im Prüfungsstress, ich darf Scheiße sagen.
              (Hopsel)
            1. Danke für eure schnellen Antworten. Bin jetzt schon ein Stück weiter. bekomme den genauen zusammenbau aber trotzdem nicht hin.

              Bin wahrscheinlich zu blöd dafür!!!

              Weiß nicht wie ich das mit dem Date Objekt einfügen soll, bin nicht sehr bewandert in sachen Javascript.

              Vielleicht könnt Ihr mir ja noch dabei helfen?

              Wäre sehr nett. Hätte nicht gedacht das ich mir damit so schwer tue.

              Ciao

              DaDomsen

              1. @@Dadomsen:

                nuqneH

                Weiß nicht wie ich das mit dem Date Objekt einfügen soll, bin nicht sehr bewandert in sachen Javascript.

                Dagegen hilft das Lesen der verlinkten Stellen in SELFHTML. Oder ist es das Lesen, worin du nicht sehr bewandert bist?

                Vielleicht könnt Ihr mir ja noch dabei helfen?

                Wie sieht denn dein bisheriger Versuch aus? Woran bist du gescheitert?

                Qapla'

                --
                Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                1. Haltet mich für blöd,
                  aber wenn ich doch über die getTime Funktion die Millisekunden bekomme, wie kann ich dann das Date-Objekt einbauen und so die Millisekunden umrechnen, dass ich jeden zweiten Tag diesen blöden Text da stehen habe? Versteh wirklich nichts mehr.

                  Sorry wegen meinem Unverständniss

                  1. @@DaDomsen:

                    nuqneH

                    Haltet mich für blöd,

                    Inzwischen ja, weil du nun Dinge fragst, die dir bereits lang und breit beantwortet wurden.

                    Erst lesen. Dann machen. SELF. Dann evtl. nochmal fragen mit genauer Angabe, was du versucht hast und woran du gescheitert bist.

                    Qapla'

                    --
                    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                    1. Danke für eure Hilfe, hat zwar bei mir lange gedauert, aber jetzt klappt es. Nur mit der Ausgabe tue ich mir noch schwer.

                      <html>
                      <head>
                      <title>Wachabteilung</title>

                      <script type="text/javascript">

                      var jetzt = new Date();

                      var tage  = Math.floor(jetzt.getTime() / 86400000);

                      if (tage % 2){

                      alert ("Wache 1")}
                      else {
                      alert ("Wache 2")}

                      </script>

                      </head><body>

                      </body></html>

                      hätte aber gerne, das der Text einfach nur auf der Seite dargestellt wird un nicht in einem neuen Fenster. Normalerweise geht das doch über document.write (), oder?
                      Wenn ja, dann klappt das mal wieder nicht.

                      Gruß

                      DaDomsen

              2. Aber hallo!

                Danke für eure schnellen Antworten. Bin jetzt schon ein Stück weiter. bekomme den genauen zusammenbau aber trotzdem nicht hin.

                Dann solltest du deine Probleme bitte etwas spezifischer beschreiben.

                Bin wahrscheinlich zu blöd dafür!!!

                Das ist noch längst nicht entschieden! :-)

                Weiß nicht wie ich das mit dem Date Objekt einfügen soll, bin nicht sehr bewandert in sachen Javascript.

                Also brauchst du ein Date-Objekt, das die aktuelle Zeit enthält. SELFHTML gibt sogar ein konkretes Beispiel dafür (Variante 1) einschließlich einer Erklärung.

                var jetzt = new Date();

                Nun hast du in der Variablen 'jetzt' ein Date-Objekt, das die aktuelle Zeit repräsentiert. mit getTime() würdest du aus diesem Objekt die Anzahl der Millisekunden bekommen, die seit dem 01.01.1970 vergangen sind. Du willst aber die Anzahl der Tage. Also musst du den erhaltenen Wert durch 86400*1000 dividieren (der Tag hat 86400 Sekunden à 1000 Millisekunden).

                var tage = jetzt.getTime() / 86400000;

                Nun musst du bloß noch festsellen, ob 'tage' gerade oder ungerade ist. Dazu hatte ich bereits die Modulo-Operation empfohlen - also eine ganzzahlige Division, bei der man nicht den Quotienten als Ergebnis nimmt, sondern den Divisionsrest. Bei der Division modulo 2 kann nur 0 (Zahl ist gerade) oder 1 (Zahl ist ungerade) herauskommen.

                if (tage % 2)  
                 { // modulo ergibt ungleich 0, 'tage' ist ungerade  
                 }  
                else  
                 { // modulo ergibt 0, 'tage' ist gerade  
                 }
                

                Hätte nicht gedacht das ich mir damit so schwer tue.

                Ich auch nicht.

                So long,
                 Martin

                --
                Zwei Politiker auf dem Weg zum Sitzungssaal: "Was sagten Sie in ihrer Rede neulich noch zur Rentenreform?" - "Nichts." - "Ja, schon klar. Aber wie haben Sie es formuliert?"
                1. Ich noch mal, mir ist gerade aufgefallen das ich mein Problem nicht richtig beschrieben habe. Probiere es noch mal:

                  Also, ich möchte auf meiner Homepage einen Text stehen haben der sich jeden zweiten Tag wiederholt. (Also nicht ungerade und gerade) denn dann würde am ende des Monats an zwei Tagen der selbe Text stehen (31 &1). Es soll aber immer abwechselnt Text A oder Text B stehen. Egal ob gerade oder ungerade.

                  Tut mir leid das ich das Falsch beschrieben habe.
                  Verzweifel noch an diesem Sch***!

                  1. @@DaDomsen:

                    nuqneH

                    Ich noch mal, mir ist gerade aufgefallen das ich mein Problem nicht richtig beschrieben habe.

                    Wir haben es schon so richtig verstanden. Und dein Problem auch schon von Angfang an so betrachtet, wie du es haben wolltest.

                    Du kannst den Antworten nicht folgen. Woran liegt’s?

                    Qapla'

                    --
                    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                2. @@Der Martin:

                  nuqneH

                  var tage = jetzt.getTime() / 86400000;

                  if (tage % 2)

                  { // modulo ergibt ungleich 0, 'tage' ist ungerade
                  }
                  else
                  { // modulo ergibt 0, 'tage' ist gerade
                  }

                    
                  Es dürfte ziemlich schwierig werden, in den Else-Zweig zu gelangen. Dazu müsste man Mitternacht auf die Tausendstelsekunde genau treffen. Oder seine Systemuhr so manipulieren, dass sie um Mitternacht anhält.  
                    
                  Oder doch vom Ergebnis der Division nur den ganzzahligen Anteil nehmen:  
                  `var tage  = Math.floor(jetzt.getTime() / 86400000);`{:.language-javascript}  
                    
                  Qapla'
                  
                  -- 
                  Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                  
                  1. Hallo Gunnar,

                    var tage = jetzt.getTime() / 86400000;
                    [code lang=javascript]if (tage % 2)

                    Es dürfte ziemlich schwierig werden, in den Else-Zweig zu gelangen. Dazu müsste man Mitternacht auf die Tausendstelsekunde genau treffen. Oder seine Systemuhr so manipulieren, dass sie um Mitternacht anhält.

                    meine Mathekenntnisse besagen, dass die modulo-Operation nur für ganzzahlige Werte für Dividend und Divisor definiert ist, das Ergebnis ist ergo wieder ganzzahlig.
                    Im Normalfall macht Javascript die Typumwandlung automatisch, so dass ich hier keinen weiteren Handlungsbedarf sah.

                    Zu meinem Erschrecken stelle ich nun fest, dass Javascript aber auch gebrochene Werte als Ergebnis der modulo-Operation auswirft. Ich bin entsetzt!

                    So long,
                     Martin

                    --
                    Lieber eine Fliege im Porzellanladen
                    als ein Elefant in der Suppe.
                    1. @@Der Martin:

                      nuqneH

                      Zu meinem Erschrecken stelle ich nun fest, dass Javascript aber auch gebrochene Werte als Ergebnis der modulo-Operation auswirft. Ich bin entsetzt!

                      “Take the rag away from your face. / Now ain’t the time for your tears.”

                      Man sollte sich hüten, dies für Vergleiche gegen 0 verwenden zu wollen:
                      alert(4.5 % 1.5); ergibt 0
                      alert(4.2 % 1.4); ergibt 4.440892098500626e-16

                      “Bury the rag deep in your face / For now’s the time for your tears.”

                      Sorry, Bob.

                      Qapla'

                      --
                      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      2. @@DaDomsen:

        nuqneH

        Habe ich mir auch schon überlegt,hatte das aber das jedesmal wenn die Seite neu aufgerufen wurde die Zeit neu beginnt. Läuft die Zeit den bei getTime auch im hintergrund weiter

        getTime() „[l]iefert die Anzahl Millisekunden als Zahl zurück, die seit dem 1. Januar 1970, 0:00:00 Uhr UTC, bis zu dem im Datumsobjekt gespeicherten Zeitpunkt vergangen sind.“

        Diese rechnechst du in die Anzahl Millisekunden als Zahl um, die seit dem 1. Januar 1970, 0:00:00 Uhr UTC, bis zu dem im Datumsobjekt gespeicherten Zeitpunkt vergangen sind.

        Beim Scriptaufruf soll im Datumsobjekt der <http://de.selfhtml.org/javascript/objekte/date.htm#allgemeines@title=aktuelle Zeitpunkt> gespeichert werden.

        so das wenn ich Heute gucke Text A steht und morgen Text B?

        Genau das erreichst du mit getTime().

        Kann man die getDay funktion nicht irgendwie auf zwei Wochen erweitern?

        ?? Die Methode soll also nicht nur „Freitag“, sondern „schwarzer Freitag“ und „weißer Freitag“ zurückkgeben?

        Das Problem ist das der Text sich immer von Tag zu Tag abwechseln soll.

        Genau das erreichst du mit getTime().

        Wenn ich das Einmal im Jahr neu schreiben muss

        Musst du nicht.

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
        1. Hallo Gunnar,

          getTime() „[l]iefert die Anzahl Millisekunden als Zahl zurück, die seit dem 1. Januar 1970, 0:00:00 Uhr UTC, bis zu dem im Datumsobjekt gespeicherten Zeitpunkt vergangen sind.“

          Diese rechnechst du in die Anzahl Millisekunden als Zahl um, die seit dem 1. Januar 1970, 0:00:00 Uhr UTC, bis zu dem im Datumsobjekt gespeicherten Zeitpunkt vergangen sind.

          das sollte einfach sein - eine Multiplikation mit 1 könnte's bringen. ;-)

          Oder bist du doch nicht wieder ins Bett gegangen?

          Ciao,
           Martin

          --
          Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
            (Gunnar Bittersmann)
          1. @@Der Martin:

            nuqneH

            getTime() „[l]iefert die Anzahl Millisekunden als Zahl zurück, die seit dem 1. Januar 1970, 0:00:00 Uhr UTC, bis zu dem im Datumsobjekt gespeicherten Zeitpunkt vergangen sind.“

            Diese rechnechst du in die Anzahl Millisekunden als Zahl um, die seit dem 1. Januar 1970, 0:00:00 Uhr UTC, bis zu dem im Datumsobjekt gespeicherten Zeitpunkt vergangen sind.

            das sollte einfach sein - eine Multiplikation mit 1 könnte's bringen. ;-)

            :-)

            Nochmal für DaDomsen: Diese rechnechst du in die Anzahl der Tage als Zahl um, die seit dem 1. Januar 1970, 0:00:00 Uhr UTC, bis zu dem im Datumsobjekt gespeicherten Zeitpunkt vergangen sind.

            --
            Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
              (Gunnar Bittersmann)

            War das ABSICHT???//slash

            Qapla'

            --
            Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
            1. Hallo,

              --
              Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
                (Gunnar Bittersmann)

              War das ABSICHT???//slash

              nee, nich hauen! Ich war's ganz bestimmt nicht! Solider, ehrlicher Zufall!
              Aber mir gefällt's auch, wie schön das hier passt. :-P

              So long,
               Martin

              --
              Schildkröten können mehr über den Weg berichten als Hasen.
          2. @@Der Martin:

            nuqneH

            das sollte einfach sein - eine Multiplikation mit 1 könnte's bringen. ;-)

            Grmpf, immer diese Leute, die mit ihrem Programmcode den Prozessor voll ausreizen müssen … Eine Addition von 0 bringt’s auch, aber den Prozesser nicht zum Überkochen. ;-)

            Qapla'

            PS: Zählt das schon unter Zeugma?

            --
            Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
  2. Hat sich alles erledigt. Habe es geschafft. Danke für eure Geduld und Hilfe.

    Danke, Danke, Danke...