Helli: Tage zählen

Hallo

Ich möchte mittels Java Script ein Script erstellen, das den Tag im Jahr ermittelt und darauf eine Datei "Dateiname"+Tag+.HTML öffnet
Habe insgesamt 365 Dateien.
Habe bisher versucht die Millisekunden in Tage umzuwandeln und dann zu subtrahieren, aber die Versuche schlugen immer fehl.

  1. Hallo

    Ich möchte mittels Java Script ein Script erstellen, das den Tag im Jahr ermittelt und darauf eine Datei "Dateiname"+Tag+.HTML öffnet
    Habe insgesamt 365 Dateien.

    2008 ist ein Schaltjahr. Nächstes Jahr hast Du ein Problem :-)

    Habe bisher versucht die Millisekunden in Tage umzuwandeln und dann zu subtrahieren, aber die Versuche schlugen immer fehl.

    Wie bitte sieht soll bei Dir "Tag" aussehen?

    [ ] eine Zahl zwischen 1 und 365?
    [ ] ein gebräuchliches Datumsformat, z.B. 01-24 oder 24.01
    [ ] ganz anders, ich beschreibe es _______________________

    Wie sehen Deine bisherigen Versuche aus, aus den Informationen des
    Date-Objektes die Zeichenfolge für Deinen Tag zu ermitteln?

    Freundliche Grüße

    Vinzenz

    1. Wie bitte sieht soll bei Dir "Tag" aussehen?

      [X] eine Zahl zwischen 1 und 365?
      [ ] ein gebräuchliches Datumsformat, z.B. 01-24 oder 24.01
      [ ] ganz anders, ich beschreibe es _______________________

      1. Hallo,

        Wie bitte sieht soll bei Dir "Tag" aussehen?

        [X] eine Zahl zwischen 1 und 365?
        [ ] ein gebräuchliches Datumsformat, z.B. 01-24 oder 24.01
        [ ] ganz anders, ich beschreibe es _______________________

        Deine Versuche, auf das gewünschte Ergebnis zu kommen, hätten mich schon interessiert.

        Mit den Methoden des Date-Objektes kannst Du den Tag ermitteln:

        1. Mit getMonth() ermittelst Du den aktuellen Monat
        2. Mit getDate() den Tag des Monats im Jahr
        3. Über getYear() kannst Du ermitteln, ob es sich um ein Schaltjahr handelt.
           (Bis 2100 brauchst Du Dir über Sonderregeln keine Gedanken zu machen,
           Du darfst diese aber gern mit einbauen :-))

        Summiere die Anzahl der Tage der Monate im Jahr, die bereits vorbei sind.
        Berücksichtige, falls erforderlich, einen Schalttag.
        Addiere dazu die Anzahl der Tage im aktuellen Monat.

        Freundliche Grüße

        Vinzenz

        1. Mit den Methoden des Date-Objektes kannst Du den Tag ermitteln:

          1. Mit getMonth() ermittelst Du den aktuellen Monat
          2. Mit getDate() den Tag des Monats im Jahr
          3. Über getYear() kannst Du ermitteln, ob es sich um ein Schaltjahr handelt.
               (Bis 2100 brauchst Du Dir über Sonderregeln keine Gedanken zu machen,
               Du darfst diese aber gern mit einbauen :-))

          Summiere die Anzahl der Tage der Monate im Jahr, die bereits vorbei sind.
          Berücksichtige, falls erforderlich, einen Schalttag.
          Addiere dazu die Anzahl der Tage im aktuellen Monat.

          Eine wesentlich trockenere Lösung ist mit parse() möglich.

  2. Hallo Helli,

    Habe bisher versucht die Millisekunden in Tage umzuwandeln und dann zu subtrahieren

    das scheint schon der richtige Weg zu sein.
    Wie hast du es gemacht?
    Ein Datumsobjekt mit dem 1.1. des aktuellen Jahres, und eines von Heute. Voneinander subtrahieren ergibt die Millisekunden seit Jahresbeginn, durch 1000 / 60 / 60 / 24 das Julianische Datum.
    Und wo klappt es nicht?

    Grüße,

    Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
  3. Hi!

    Ich möchte mittels Java Script ein Script erstellen, das den Tag im Jahr ermittelt und darauf eine Datei "Dateiname"+Tag+.HTML öffnet

    Warum mittels JavaScript?
    Es wird ein Problem mit Suchmaschinen geben, weil diese keinen Javascript-Code ausführen und die entsprechende Seite dann nicht indizieren werden.
    Das ist in deinem Fall vielleicht nicht weiter problematisch, oder?

    Problematisch wird es sicherlich aber, daß deine Seite nicht mehr ohne Javascript funktioniert.
    Viele User deaktivieren JS im Browser, weil sie von Werbemist und anderen nervigen Dingen verschont bleiben wollen.
    Andere User können gar kein JS nutzen, weil dieses vielleicht irgendwie gefiltert wird oder weil sie mit einem Client unterwegs sind, der gar kein JS unterstützt.

    Wäre es nicht sinnvoller, wenn du dein Vorhaben serverseitig umsetzt?
    Wenn du z.B. PHP einsetzen würdest, dann könntest du dir mit Hilfe der Funktion strftime("%j"); den Tag des Jahres als Zahl (von 001 bis 366) ausgeben lassen.
    Mit der Funktion getdate() könntest du dir ein assoziatives Array zurückgeben lassen, dessen Schlüssel "yday" ebenfalls den Tag des Jahres als Zahl enthält.

    In jedem Fall hättest du dann eine Lösung, die a) auch ohne JS funktioniert und die b) viel einfacher umzusetzen wäre.

    Habe insgesamt 365 Dateien.

    Was ist in einem Schaltjahr? Fehlt dann nicht ein Tag?

    Habe bisher versucht die Millisekunden in Tage umzuwandeln und dann zu subtrahieren, aber die Versuche schlugen immer fehl.

    hmm...
    Naja, vielleicht nicht unbedingt der falsche Ansatz...
    Ich würde es aber anders machen...
    Aber in jedem Fall wäre es sinnvoll, wenn du mal deinen Code posten würdest.
    Dann könnte man deinen Fehler sicherlich recht schnell erkennen.

    Aber wie auch immer...
    So würde ich die Sache angehen:

      
    <script type="text/javascript">  
      
    function TagDesJahres()  
    {  
     var datum;  
     var tag;  
     var monat;  
     var jahr;  
     var tage = -1;  
     datum = new Date();  
     tag = datum.getDate();  
     jahr = datum.getFullYear();  
     monat = datum.getMonth() + 1;  
      
     for ( zaehler=1; zaehler<monat; zaehler++ )  
     {  
      tage += (new Date( jahr, zaehler, 0 )).getDate();  
     }  
     tage += tag;  
      
     return tage;  
    }  
      
    // window.alert( TagDesJahres() );  
    window.location.href = "dateiname" + TagDesJahres() + ".html";  
    </script>  
    
    

    Schöner Gruß,
    rob

    1. Ich möchte mittels Java Script ein Script erstellen, das den Tag im Jahr ermittelt und darauf eine Datei "Dateiname"+Tag+.HTML öffnet
      Warum mittels JavaScript?
      Es wird ein Problem mit Suchmaschinen geben, weil diese keinen Javascript-Code ausführen und die entsprechende Seite dann nicht indizieren werden.
      ...

      Alles richtig, aber es ist doch oft so, dass:

      • Leute anfangen Inhalte mit HTML bereitzustellen
      • dann ihre Kenntnisse in JS und CSS vertiefen
      • aber nie irgendeine serverseitige Logik (PHP, Perl etc.) nutzen

      Und dagegen spricht ja auch nichts.

      1. Hi!

        Und dagegen spricht ja auch nichts.

        Nein. Natürlich nicht.
        Aber trotzdem halte ich es für sinnvoll, auf die Nachteile dieser Technik hinzuweisen.
        Eine serverseitige Lösung wäre hier sicherlich der bessere Weg.
        Was jetzt draus gemacht wird, bleibt dem Fragesteller überlassen.
        Neben dem Hinweis, wie man das mit PHP bewerkstelligen kann, habe ich ihm ja auch sein Javascript dafür geschrieben.

        Schöner Gruß,
        rob