Načrtovanje in razvoj spletnih aplikacij

29. vaja: Koledar 2

Spoznali bomo
  • Kako z JavaScritom kreiramo koledar za poljuben mesec in leto

Sestavi spletno stran in jo poimenuj 29vaja-JS-priimek-ime.html. Stran naj bo izdelana v HTML5 in s CSS, program pa naj bo napisan z JavaScriptom.

Navodila za izdelavo spletne strani: Koledar 2

  1. laboratorijska vaja: izračun števila dni v mesecu:
    • Vnos meseca in leta s funkcijo prompt().
    • Izračun števila dni v mesecu:
      • Februar ima 29 dni za prestopna leta, sicer ima 28 dni. Ostali meseci:
      • 31 dni imajo lihi meseci od januarja do julija in sodi meseci od avgusta do decembra.
      • 30 dni imajo sodi meseci od januarja do julija in lihi meseci od avgusta do decembra.
    • Preverjanje, ali je leto prestopno:
      • Leto je prestopno, če je številka leta deljiva s 4 (leta 1988, 1992, 1996 so prestopna).
      • Leta, ki so deljiva s 100, niso prestopna, čeprav bi po prejšnjem pravilu morala biti (leta 1700, 1800, 1900 niso prestopna).
      • Če je pa leto deljivo s 400, je leto spet prestopno, čeprav po prejšnjem pravilu ne bi smelo biti (leta 1600, 2000, 2400 so prestopna).
  2. laboratorijska vaja: koledar za poljuben mesec in leto:
    • Spremenljivki za začetni dan in število dni v mesecu, dve vgnezdeni zanki for (ali ena zanka for z dodanim stavkom if za prelome vrstic) za izpis vrstic in stoplcev tabele.
    • Izračun začetnega dneva iz vnešenega meseca in leta (objektni tip Date, postopek getDay()).
    • Elemente HTML naj dodaja v znakovni niz, ki ga na koncu izpiše s postopkom document.write().
  3. laboratorijska vaja: Fiksni prazniki, izračun velike noči; Uporaba funkcij:
  4. laboratorijska vaja (neobvezno): Uporaba obrazca; Lastnost innerHTML:
    • Vnos meseca in leta s pomočjo elementa form.
    • Izpis prazne tabele.
    • Povezava podatka iz obrazca s spremenljivko v JavaScriptu s postopkom document.getElementById().
    • Ob pritisku na gumb spreminjanje tabele z lastnostjo innerHTML.

Formula za izračun velike noči

Veliko noč izračunamo po formuli Oudin-a (1940). Več o izračunu velike noči in koledarjih si preberi tukaj.
Za izbrano leto (Y) gregorijanskega koledarja, Y > 1582, izračunamo dan (D) in mesec (M) velike noči s pomočjo spodnjih formul.
Vse spremenljivke so celoštevilske.
Vsa deljenja so celoštevilska.
Pri vsakem deljenju uporabimo postopek Math.floor(), ki vrne največje celo število, ki je manjše ali enako argumentu.

Formule:
C = Y/100
N = Y - 19*(Y/19)
K = (C - 17)/25
I = C - C/4 - (C - K)/3 + 19*N + 15
I = I - 30*(I/30)
I = I - (I/28)*(1 - (I/28)*(29/(I + 1))*((21 - N)/11))
J = Y + Y/4 + I + 2 - C + C/4
J = J - 7*(J/7)
L = I - J
M = 3 + (L + 40)/44
D = L + 28 - 31*(M/4)
Pravilnost algoritma preverite s pomočjo spodnje tabele, ki prikazuje nekaj datumov velikih noči.

06. 04. 1980 15. 04. 1990 23. 04. 2000 04. 04. 2010 12. 04. 2020
19. 04. 1981 31. 03. 1991 15. 04. 2001 24. 04. 2011 04. 04. 2021
11. 04. 1982 19. 04. 1992 31. 03. 2002 08. 04. 2012 17. 04. 2022
03. 04. 1983 11. 04. 1993 20. 04. 2003 31. 03. 2013 09. 04. 2023
22. 04. 1984 03. 04. 1994 11. 04. 2004 20. 04. 2014 31. 03. 2024
07. 04. 1985 16. 04. 1995 27. 03. 2005 05. 04. 2015 20. 04. 2025
30. 03. 1986 07. 04. 1996 16. 04. 2006 27. 03. 2016 05. 04. 2026
19. 04. 1987 30. 03. 1997 08. 04. 2007 16. 04. 2017 28. 03. 2027
03. 04. 1988 12. 04. 1998 23. 03. 2008 01. 04. 2018 16. 04. 2028
26. 03. 1989 04. 04. 1999 12. 04. 2009 21. 04. 2019 01. 04. 2029

Slika spletne strani, ko se stran naloži v brskalniku:

Slika spletne strani v brskalniku:
Slika 29.vaje: Koledar