Stift: Datum ermitteln aus Tag des Jahres

Hallo,

ich habe ein Problem mit Javascript. Ich habe die Jahreszahl und den Tag des Jahres.

Wie kann ich daraus in Javascript das vollstaendige Datum ermitteln?

  1. Moin

    function jahr_und_tag(j,t) {  
    var datum=new Date(j,0,1);  
    datum.setTime(datum.getTime()+(t-1)*86400000);  
    return datum;  
    }
    

    erwartet eine Jahreszahl j und einen Tag t als Argumente, gibt das entsprechende Datum als Date-Objekt zurück.
    Hier fehlen allerdings noch sämtliche Sicherheitsabfragen auf falsche oder fehlende Argumente.

    Gruß
    rfb

    --
    Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
    (Galileo Galilei)
    1. Yerf!

      [code lang=javascript]function jahr_und_tag(j,t) {
      var datum=new Date(j,0,1);

      sollte ein
      var datum=new Date(j,0,t);
      nicht auch gehen?

      datum.setTime(datum.getTime()+(t-1)*86400000);

      Das arbeiten mit den Millisekunden über größere Zeiträume kann wegen der Sommer-/Winterzeitumstellung gefährlich werden. (Eine fehlende Stunde kann schnell zum Vortag als Ergebnis führen)

      Gruß,

      Harlequin

      1. Moin

        sollte ein
        var datum=new Date(j,0,t);
        nicht auch gehen?

        Nein, denn zB. den 365. Januar gibts nicht! Soweit ich die Problemstellung verstanden habe geht es doch darum zB. dem 127. Tag des Jahres 2006 eine Datumsangabe mit Tag Monat Jahr zuzuordnen.

        datum.setTime(datum.getTime()+(t-1)*86400000);

        Das arbeiten mit den Millisekunden über größere Zeiträume kann wegen der Sommer-/Winterzeitumstellung gefährlich werden. (Eine fehlende Stunde kann schnell zum Vortag als Ergebnis führen)

        schwierig, da ja das System selbst ausschließlich mit Millisekunden arbeitet!
        Wer da Sorgen hat, kann die Variable datum ja mit der zusätzlichen Zeitangabe 12:00:00 initialisieren, dann ist mit oder ohne Sommerzeit der Rückgabewert von datum immer am erwarteten Kalendertag.

        Gruß
        rfb

        --
        Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
        (Galileo Galilei)
        1. Yerf!

          Nein, denn zB. den 365. Januar gibts nicht! Soweit ich die Problemstellung verstanden habe geht es doch darum zB. dem 127. Tag des Jahres 2006 eine Datumsangabe mit Tag Monat Jahr zuzuordnen.

          JavaScript ist da aber anderer Meinung ;-)
          Das wird intern umgerechnet, beim Auslesen kommt dann das richtige Datum raus.

          Das arbeiten mit den Millisekunden über größere Zeiträume kann wegen der Sommer-/Winterzeitumstellung gefährlich werden. (Eine fehlende Stunde kann schnell zum Vortag als Ergebnis führen)
          schwierig, da ja das System selbst ausschließlich mit Millisekunden arbeitet!
          Wer da Sorgen hat, kann die Variable datum ja mit der zusätzlichen Zeitangabe 12:00:00 initialisieren, dann ist mit oder ohne Sommerzeit der Rückgabewert von datum immer am erwarteten Kalendertag.

          Stimmt auch.
          Man kann aber auch über datum.setDate(datum.getDate()+t-1); arbeiten, wieso das geht steht oben.

          Gruß,

          Harlequin

          1. Moin

            JavaScript ist da aber anderer Meinung ;-)
            Das wird intern umgerechnet, beim Auslesen kommt dann das richtige Datum raus.

            Nun, dann erübrigt sich das Rechenverfahren. Bestand eine Notwendigkeit, dies erst auf meinen Gegeneinwand zu erwähnen? Ich kann Wahrheiten verkraften.

            Man kann aber auch über datum.setDate(datum.getDate()+t-1); arbeiten, wieso das geht steht oben.

            Nein, da steht dass das genauso überflüssig ist.

            Gruß
            rfb

            --
            Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
            (Galileo Galilei)
            1. Yerf!

              Moin

              JavaScript ist da aber anderer Meinung ;-)
              Das wird intern umgerechnet, beim Auslesen kommt dann das richtige Datum raus.
              Nun, dann erübrigt sich das Rechenverfahren. Bestand eine Notwendigkeit, dies erst auf meinen Gegeneinwand zu erwähnen? Ich kann Wahrheiten verkraften.

              Ich hab nicht dran gedacht, dass dieses Verhalten von JS zu ungewöhnlich ist, als dass man es als gegeben voraussetzen könnte. Aber stimmt schon, so manche Dinge am Date-Objekt passen gut zum 32. März ;-)

              Man kann aber auch über datum.setDate(datum.getDate()+t-1); arbeiten, wieso das geht steht oben.
              Nein, da steht dass das genauso überflüssig ist.

              Hm, nicht ganz. Als allgemeine Methode, um von einem beliebigen Datum x Tage später zu berechnen, hat sie durchaus Existenzberechtigung.

              Gruß,

              Harlequin