brauchbar.de - WebDesign, Programmierung,Development in HTML, CSS, Javascript, PHP, Perl und mehr

[ Startseite | Artikel : HTML · JavaScript · CSS · Perl · Usability · Sonstiges | Services | Über ]


verwandte Artikel und Seiten

JS: Woche des Jahres

von Thomas Salvador.

In diesem Beispiel implementieren wir eine Funktion, die die Woche des Jahres (week of year) zu einem gegebenen Datum berechnet. Dabei werden "deutsche" Verhältnisse zugrundegelegt: Fällt der Erste des Jahres auf einen Montag - Donnerstag, so liegt er in der ersten Woche des Jahres, sonst in der letzten des vorherigen. (Achten Sie bitte auch auf die verwandten Artikel.)

function getWeek(dat) {

// (c) 1999 by Thomas Salvador, Freeware
// http://www.brauchbar.de
//
// Die hier gebrachten Scripts koennen Sie nach Belieben verwenden, solange
// diese Copyright-Meldung vollstaendig und unveraendert enthalten bleibt
// Jegliche Nutzung mit veraenderter oder entferter Melkdung ist untersagt.

  var y = t4(dat.getYear());

  var julianDat = getJulian(dat);
  var dowDat = julianDow(julianDat);

  var workJulian;

  if (dowDat == 0)
      workJulian = julianDat - 6;
    else
      workJulian = julianDat - dowDat + 1;

    var julianFirst = ymd2julian(y, 1, 1);

    var weeksFromFirst = Math.floor(
                         (workJulian-julianFirst) / 7) + 1;

    var dowFirst = julianDow(julianFirst);
    var week;
    if (dowFirst == 0 || dowFirst > 4) {
      week = 53 + weeksFromFirst;
      if (week > 53)
        week -= 53;
    } else
      week = 1 + weeksFromFirst;

    if (week >= 53) {
      var tempWeek = getWeek(new Date(y+1, 0, 1));
      if (tempWeek == 1)
        week = 1;
    }

    return week;
}

Bei genauerer Betrachtung sieht man, dass die Funktion die Woche des Montages bestimmt, der in der Woche des gegebenen Datums liegt.

Abschließend wird noch eine Funktion benötigt, die das korrekte Jahr zur Woche bestimmt:

function weekYear(dat, wek) {
  var result = t4(dat.getYear());

  if (wek == 1 && dat.getMonth() == 11)
    result++;
  else
    if (wek > 50 && dat.getMonth() == 0)
    result--;

  return result;
}

Beispiel:

<script type="text/javascript"><!--

  function genALine(dat) {
    var wek = getWeek(dat);
    document.write('Der ', date2str(dat),
                   ' liegt in Woche ', wek,' des Jahres',
                    weekYear(dat, wek), '. <br>');
  }
  var now=new Date();
  genALine(now);
  genALine(new Date(1997, 0, 1));
  genALine(new Date(1997, 11, 31));
  genALine(new Date(1998, 0, 1));
  genALine(new Date(1998, 11, 31));
  genALine(new Date(1999, 0, 1));

// -->
</script>

liefert

Ausgabe auf Ihrem Browser


Verwandte Artikel und Seiten



brauchbar web
Diese Site anlinken. Artikel zu CSS | HTML | JavaScript | Perl | Usability | Sonst. | nach Ausgabe.

Copyright © 1999-2015 Thomas Salvador und brauchbar.de . Alle Rechte vorbehalten. Gehostet bei all-inkl.
Reproduktion, ganz oder in Teilen, nur mit schriftlicher Zustimmung von Thomas Salvador. Impressum · Datenschutzerklärung · Kontakt.

zurück zum Inhaltsverzeichnis der 11. Ausgabe.

Linken Sie bitte zu der festen Adresse http://www.brauchbar.de/wd/artikel/50.html .