datumseingabe
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
datumseingabe [2024/02/25 02:56] – [Wahl des Tages] 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: | ||
* // | * // | ||
- | |||
* // | * // | ||
</ | </ | ||
Zeile 32: | Zeile 32: | ||
==== 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 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\cdot(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.1708826181.txt.gz · Zuletzt geändert: 2024/12/20 01:33 (Externe Bearbeitung)