datumseingabe
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
datumseingabe [2024/02/13 15:36] – [Wochentage] hcgreier | datumseingabe [2025/07/02 15:09] (aktuell) – [Schaltjahr] hcgreier | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Datumseingabe ====== | ====== Datumseingabe ====== | ||
- | Das Jahr erhält | + | Im folgenden Text stehen |
<WRAP center round info 100%> | <WRAP center round info 100%> | ||
Es ist zu beachten, dass es einen Unterschied in der Zählweise der Jahre gibt: | Es ist zu beachten, dass es einen Unterschied in der Zählweise der Jahre gibt: | ||
* // | * // | ||
- | |||
* // | * // | ||
</ | </ | ||
- | {{ : | + | {{ : |
Die astronomische Verwendung eines Jahres Null und negativer Jahre ist die einzige, die für arithmetische Zwecke geeignet ist. Dies lässt sich anhand folgender Beispiele zeigen: | Die astronomische Verwendung eines Jahres Null und negativer Jahre ist die einzige, die für arithmetische Zwecke geeignet ist. Dies lässt sich anhand folgender Beispiele zeigen: | ||
Zeile 27: | Zeile 27: | ||
* die durch 400 teilbar sind, | * die durch 400 teilbar sind, | ||
- | werden Schaltjahre genannt. Diese Jahre sind genau ein Tag länger als die Gemeinjahre. Der kürzeste Monat Februar erhält am Monatsende einen Tag mehr, um die Differenz zwischen dem siderischen Jahr und dem tropischen Jahr aufzufangen. | + | werden Schaltjahre genannt. Diese Jahre sind genau ein Tag länger als die Gemeinjahre. Der kürzeste Monat Februar erhält am Monatsende einen Tag mehr, um die Differenz zwischen dem [[wichtige_konstanten# |
<WRAP center round box 100%> | <WRAP center round box 100%> | ||
==== Beispiel für JavaScript ==== | ==== Beispiel für JavaScript ==== | ||
- | Die Funktion '' | + | Die Funktion '' |
< | < | ||
// Schaltjahr berechnen (ja/nein) | // Schaltjahr berechnen (ja/nein) | ||
- | function isLeap(y) { | + | function isLeap(Y) { |
- | if(y > 1582) { | + | if(Y > 1582) { |
// Gregorianischer Kalender | // Gregorianischer Kalender | ||
- | return ((y % 4 == 0 && | + | return ((Y % 4 == 0 && |
} | } | ||
else { | else { | ||
// Julianischer Kalender | // Julianischer Kalender | ||
- | return (y % 4 == 0) ? 1 : 0; | + | return (Y % 4 == 0) ? 1 : 0; |
} | } | ||
} | } | ||
Zeile 53: | Zeile 53: | ||
Es wird ein Monat $M$ aus der Tabelle ausgewählt, | Es wird ein Monat $M$ aus der Tabelle ausgewählt, | ||
{{tablelayout? | {{tablelayout? | ||
+ | ^ Tabelle 1 ||| | ||
^ Nummer $M$ ^ Monatsname | ^ Nummer $M$ ^ Monatsname | ||
| 1 | Januar | | 1 | Januar | ||
Zeile 67: | Zeile 68: | ||
| 12 | Dezember | | 12 | Dezember | ||
- | Der mit dem * gekennzeichnete Monat ist der Schaltmonat. | + | Der mit dem * gekennzeichnete Monat ist der Schaltmonat. |
===== Wahl des Tages ===== | ===== Wahl des Tages ===== | ||
Zeile 76: | Zeile 77: | ||
Der [[julianischer Tag JD|Julianischer Tag JD]] wird aufgrund seines Umfangs in einem eigenen Kapitel behandelt. | Der [[julianischer Tag JD|Julianischer Tag JD]] wird aufgrund seines Umfangs in einem eigenen Kapitel behandelt. | ||
- | ===== Tagesnummer ===== | ||
- | |||
- | $Z$ liegt zwischen 1 bis 365 (bzw. 366 in einem Schaltjahr). Es gilt: | ||
- | |||
- | $$Z = \sum_{M = 1}^{13} N(M - 1) + D$$ | ||
===== Wochentage ===== | ===== Wochentage ===== | ||
- | Der Julianische Tag wird auf Betrag zwischen 0 und 7 reduziert. Diesem Wert wird der Name eines Wochentags (Tabelle) zugeordnet. | + | Der Julianische Tag wird auf einen Betrag zwischen 0 und 7 reduziert. Diesem Wert wird der Name eines Wochentags (Tabelle) zugeordnet. |
+ | |||
+ | \[\begin{align} | ||
+ | \mathrm{wt} =& | ||
+ | =&\; \mathrm{red}({JD + 1.5, 7}) + 1 | ||
+ | \end{align}\tag{1}\] | ||
- | \[ \begin{align} \mathrm{wt} =& | ||
{{tablelayout? | {{tablelayout? | ||
+ | ^ Tabelle 2 || | ||
^ wt ^ Wochentag | ^ wt ^ Wochentag | ||
| 0 | Sonntag | | 0 | Sonntag | ||
Zeile 96: | Zeile 97: | ||
| 5 | Freitag | | 5 | Freitag | ||
| 6 | Samstag | | 6 | Samstag | ||
- | | 7 = 0 | Sonntag | + | | 7 $\hat{=}$ 0 | Sonntag |
Die Reduktionsfunktion '' | Die Reduktionsfunktion '' | ||
Zeile 109: | Zeile 110: | ||
==== Beispiel ==== | ==== Beispiel ==== | ||
- | **Man ermittle den Wochtag für den 15.4.2023.** | + | {{: |
Der Julianische Tag für dieses Datum wurde bereits in [[: | Der Julianische Tag für dieses Datum wurde bereits in [[: | ||
Zeile 123: | Zeile 124: | ||
Der ganzzahlige Rest einer Division lässt sich in diversen Programmiersprachen mit der '' | Der ganzzahlige Rest einer Division lässt sich in diversen Programmiersprachen mit der '' | ||
- | * In Java/ | + | * In Java/ |
- | * In Python ist der Operator ebenfalls | + | * In Python |
- | * In PHP lautet der Operator | + | |
</ | </ | ||
+ | {{anchor: | ||
+ | ===== Tagesnummer des Jahres ===== | ||
+ | Die Tagesnummer $Z$ gibt die Summe der Tage vom Jahresbeginn bis zum gegegeben Tag des Jahres an. | ||
+ | $Z$ liegt zwischen 1 bis 365 (bzw. 366 in einem Schaltjahr). Es gilt: | ||
+ | |||
+ | $$Z = \sum_{M = 1}^{13} N\cdot(M - 1) + D\tag{2}$$ | ||
+ | |||
+ | Dabei ist $N$ ist die [[# | ||
+ | |||
+ | {{tablelayout? | ||
+ | ^ Tabelle 3 ||||||||||||| | ||
+ | ^ | ||
+ | | Gemeinjahr | ||
+ | | Schaltjahr | ||
+ | |||
+ | Die Tabelle beginnt die Zählung jeweils bei $0$, da der Tag $D$ des aktuellen Monats noch addiert wird: | ||
+ | |||
+ | * Der 16. Juni in einem Gemeinjahr ist der $151 + 16 = 167$. Tag des Jahres. | ||
+ | * Der 24. Oktober in einem Schaltjahr ist der $274 + 24 = 298$. Tag des Jahres. | ||
+ | * usw. | ||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | ==== Beispiel für JavaScript ==== | ||
+ | |||
+ | Folgender Beispielcode enthält die Funktion '' | ||
+ | |||
+ | < | ||
+ | function getDayOfYear(Y, | ||
+ | const firsts = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; | ||
+ | if(isLeap(Y)) { | ||
+ | // Für Schaltjahre: | ||
+ | let i = firsts.length; | ||
+ | while(i-- > 2) { | ||
+ | firsts[i] += 1; | ||
+ | } | ||
+ | } | ||
+ | return firsts[M - 1] + D; | ||
+ | } | ||
+ | console.log(getDayOfYear(2023, | ||
+ | console.log(getDayOfYear(2024, | ||
+ | // Test für 1. März | ||
+ | console.log(getDayOfYear(2023, | ||
+ | console.log(getDayOfYear(2024, | ||
+ | // Test für 31. Dezember | ||
+ | console.log(getDayOfYear(2023, | ||
+ | console.log(getDayOfYear(2024, | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Einen eleganteren Weg zeigt [[: | ||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | ==== Beispiel für JavaScript ==== | ||
+ | |||
+ | < | ||
+ | function getDayOfYear(Y, | ||
+ | let k = isLeap(Y) ? 1 : 2; | ||
+ | return Math.floor((275*M)/ | ||
+ | } | ||
+ | console.log(getDayOfYear(2023, | ||
+ | console.log(getDayOfYear(2024, | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | {{anchor: | ||
+ | |||
+ | ===== Jahr in dezimaler Darstellung ===== | ||
+ | |||
+ | Mithilfe den beiden oben genannten Funktionen '' | ||
+ | |||
+ | $$J = Y + \frac{Z}{365 + Q}\tag{3}$$ | ||
+ | |||
+ | $Q = 0$ im Normaljahr und $Q = 1$ im Schaltjahr. $J$ ist dann das Jahr in Dezimalform. | ||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | ==== Beispiel für JavaScript ==== | ||
+ | |||
+ | < | ||
+ | function getDecimalYear(Y, | ||
+ | const days = isLeap(Y) ? 366 : 365; | ||
+ | let doy = getDayOfYear(Y, | ||
+ | return Y + (doy/days); | ||
+ | } | ||
+ | console.log(getDecimalYear(2023, | ||
+ | console.log(getDecimalYear(2024, | ||
+ | // 1. Januar 00:00 Uhr | ||
+ | console.log(getDecimalYear(2024, | ||
+ | // 31. Dezember 00:00 Uhr | ||
+ | console.log(getDecimalYear(2024, | ||
+ | |||
+ | </ | ||
+ | </ |
datumseingabe.1707834987.txt.gz · Zuletzt geändert: 2024/12/20 01:33 (Externe Bearbeitung)