Sternzeichen berechnen 01
Ein nettes Script zur Berechnung von Sternzeichen. Aus den Angaben für Monat und Tag wird das westliche Tierkreiszeichen errechnet, aus den Jahresangaben das chinesische Sternzeichen.
|
|
abendländisches und chinesisches Sternzeichen
Siehe auch: Anzeige des aktuellen abendländischen Sternzeichens
Siehe auch: Berechnung des abendländischen Sternzeichens mit Bildanzeige
abendländisches Horoskop / Sternzeichen
Die Ermittlung des westlichen Sternzeichens erfolgt durch eine Folge von Vergleichen, die den Wahrheitswert von Bedingungen untersuchen und den entsprechenden Text für das Sternzeichen in das Formularfeld schreibt.
Beispiel für das Sternzeichen Fische, vom 19.02 - 20.03
Wenn
der Monat Februar ist und der Tag ist größer / gleich 19
oder
der Monat März ist und der Tag ist kleiner / gleich 20
dann ist der angezeigte Wert "Fische"
if (Monat == 2 && Tag >=19 || Monat == 3 && Tag <=20)
{value = "Fische";}
chinesisches Sternzeichen
Die Ermittlung des Chinesischen Strenzeichens erfolgt ebenfalls durch mathematische Berechnungen und Vergleiche. Da es zwölf im Jahresrhythmus wechselnde Sternzeichen im chinesischen Kalender gibt, soll dem Geburtsjahr eines von 12 Sternzeichen zugeordnet werden. Eine Wiederholung tritt also in einem 12-jährigen Zyklus auf.
Dividiert man das Lebensalter durch 12, wird als Rest der Division nur ein Wert von 0 bis 11 (Rest = '0' bis Rest = '11') möglich sein. Abhängig von diesem Restwert wird eines der 12 chinesischen Sternzeichen zugeordnet. Basis der Berechnung ist das Jahr 1901 mit dem Zeichen 'Büffel'. Eine Tabelle mit den 12 Zeichen finden sie weiter unten.
Beispiel für das Geburtsjahr 1964:
(1964 - 1901) / 12 = 63
63 / 12 = 5 Rest 3
Aus einer Referenztabelle ermittelt man für den Wert '3' das Sternzeichen: "Drache"
Die Formel im Script (Erklärung weiter unten)
x = (Geburtsjahr - Startjahr) % 12;
Restwert ermitteln mit JavaScript
Um den Restwert einer Division zu ermitteln steht uns in JavaScript eine interne Funktion zur Verfügung: Modulo
Das Rechenzeichen für Modulo ist %
Diese Formel schreibt den mit Modulo ermittelten Wert in die Variable 'x'
x = (1964 - 1901) % 12;
Die Variable 'x' enthält nach der Berechnung den Wert '3'
... nur als Vergleich
Ergebnis = (1964 - 1901) / 12;
Die Variable 'Ergebnis' enthält nach der Berechnung den Wert '5,25'
12 chinesische Sternzeichen
Die zwölf im Jahresrhythmus wechselnden Sternzeichen des chinesischen Kalenders und die ihnen zugeordneten Charaktereigenschaften (Quelle der Bedeutungen: Wikipedia).
Ich habe in dieser Auflistung fortlaufende Nummern eingetragen. Die chinesischen Sternzeichen dieser Liste möchte ich in der Berechnungsfunktion mit Hilfe der Zahlenwerte identifizieren / referenzieren.
Die Zahl entspricht dem Wert der in der Variablen 'x' abgelegt wurde und bei der Divison mit der JavaScript-Funktion Modulo (%) ermittelt wurde.
Rest 3 = Drache
| 0 | Ochse / Büffel | sanft |
| 1 | Tiger | verwegen |
| 2 | Hase | gutmütig |
| 3 | Drache | geistreich |
| 4 | Schlange | schlau |
| 5 | Pferd | ungeduldig |
| 6 | Schaf / Ziege | artig |
| 7 | Affe | unbeständig |
| 8 | Hahn | stolz |
| 9 | Hund | treu |
| 10 | Schwein | ehrlich |
| 11 | Ratte | angriffslustig |
Überlegungen zur Berechnung:
Von der im Formular eingetragenen Jahreszahl wird der Wert 1901 (Sternzeichen Rind) subtrahiert. Das Ergebnis dann durch 12 geteilt (12 Sternzeichen). Interessant für die Zuordnung des chin. Sternzeichens ist der Rest diser Division durch 12. Der Rest ist ein Wert zwischen 0 und 11. In der Reihenfolge der Auflistung oben werden die Sternzeichen den Restwerten 0 bis 11 zugeordnet. Eine Wiederholung tritt entsprechend im 12-jährigen Zyklus auf.
Geburtsjahr 1901, 1913, 1925, 1937, ... 2009 | der ermittelte Rest '0' = Sternzeichen Büffel
Geburtsjahr 1902, 1914, 1926, 1938, ... 2010 | der ermittelte Rest '1' = Sternzeichen Tiger
Geburtsjahr 1903, 1915, 1927, 1939, ... 2011 | der ermittelte Rest '2' = Sternzeichen Hase
| Jahr | Berechnung mit / | Berechnung mit % | Sternzeichen |
| 1913 | (1913 - 1901) / 12 | 1,0000 | (1913 - 1901) % 12 | 0 | Büffel |
| 1914 | (1914 - 1901) / 12 | 1,0833 | (1914 - 1901) % 12 | 1 | Tiger |
| 1915 | (1915 - 1901) / 12 | 1,1666 | (1915 - 1901) % 12 | 2 | Hase |
| 2009 | (2009 - 1901) / 12 | 9,0000 | (2009 - 1901) % 12 | 0 | Büffel |
| 2010 | (2010 - 1901) / 12 | 9,0833 | (2010 - 1901) % 12 | 1 | Tiger |
| 2011 | (2011 - 1901) / 12 | 9,1666 | (2011 - 1901) % 12 | 2 | Hase |
Fehler durch simple Zuordnung
Das ist die simple Methode die nicht wirklich zutrifft, denn des chinesische Jahr beginnt nicht zum jährlich gleichen Termin!
Jedes Jahr zum chinesischen Neujahr (das ist zum Zeitpunkt des zweiten, in seltenen Fällen dritten Neumonds nach der Wintersonnenwende, also zwischen dem 21. Januar und dem 21. Februar), wechselt die Bezeichnung des Sternzeichens zyklisch nach der oben stehenden Liste.
Da das chinesische Neujahr frühestens am 21. Januar beginnt, zählen bis zum 20. Januar geborene immer zum Zeichen des Vorjahrs.
Zumindest diese Situation habe ich berücksichtigt durch
if (Monat == 1 && Tag <=20) {x = x-1}
Alle zwischen 21. Januar und 20. Februar geborene sind nicht fest zuzuordnen und variieren von Jahr zu Jahr, abhängig vom Mondzyklus.
Das wurde von mir nicht berücksichtigt. Dazu müsste ich entweder
- den Mondzyklus in die Berechnung mit einbeziehen
- die Datumsangaben aus einer tabellarischen Liste entnehmen

|