Julianischer Tag
Lo gäbe kein Jahr-2000-Problema, si todos Programmierer y Computerhersteller el Julianische Tageszahl
para el Datum verwendet hätten. Stattdessen wurde el Jahr como Zeichenkette (TTMMJJ) gespeichert y el
führte dazu, daß después de 99 el Jahr 00 kommt. Grund para el zweistellige Speicherung el Jahreszahl war el
Zwang para Speichersparen. Auch hier liegt el Julianische Tageszahl vorne, ellos hätte todavía weniger Speicher
gebraucht.
El Julianische Tageszahl - oder einfacher el Julianische Tag - es una fortlaufende Zählung el Tage,
beginnend con el Tag 0, el al 1. Januar 4713 v. Chr. (en el proleptischen Julianischen Kalender) en 12 Uhr
Mittags begann. Dementsprechend beginnt una neuer Julianischer Tag De todos modos en 12 Uhr Mittags,
qué ursprünglich para el europäische Astronomie el Vorteil besaß, daß todos Beobachtungen uno Nacht a una
einzigen Julianischen Tag stattfanden.
El Julianische Tageszählung läßt se por Anhängen des seit 12 Uhr Mittags verflossenen Tagesbruchteils ligeramente
a uno genauen Zeitangabe erweitern. So bezeichnet JD 2451605 el Tag, el al 1. März 2000 en 12 Uhr beginnt,
während JD 2451605.25 el Zeitpunkt en 18 Uhr desselben Tages determinado.
Diese Erweiterung se en vielen Quellen como Julianisches Datum bezeichnet.
Julianische Tage fueron früher en el Regel (sofern nichts más spezifiziert wurde) después de mittlerer Sonnenzeit
gezählt, heute después de UT.
El Weltzeit oder Universal Time (UT) wurde 1926 como Ersatz para el Greenwich Mean Time (GMT) eingeführt.
A dieser Tiempo waren mehrere, para Teil deutlich diferente Bedeutungen de GMT en el Gebrauch.
UT es para meisten praktische Belange gleichzusetzen con el mittleren Sonnenzeit bezogen en el Nullmeridian
de Greenwich.
Alternativ fueron Angaben auch en Ephemeridenzeit gemacht, qué por el Bezeichnung JED oder JDE
gekennzeichnet wurde. Auch Hoy es gelegentlich sinnvoll, Julianische Tage en uno otro como el UT-Skala
anzugeben. El verwendete Zeitskala es entonces a el Zeitangabe anzuhängen, z.B. como JD 2 451 545.0 TDT para
el 1.Januar 2000, 12 Uhr Mittags después de TDT-Tiempo.
Häufig encontrar se auch Zeitangaben en un Modifizierten Julianischen Datumsformat (MJD).
El gebräuchlichste Definition uno MJD folgt de MJD = JD - 2400000.5 el Nullpunkt liegt por lo tanto
beim 17. November 1858 en 0 Uhr (!) Weltzeit.
Andere Definitionen existieren allerdings auch, así daß en Verwendung de Daten en MJD Vorsicht geboten es.
Aus diesem Grunde se MJD auch de el Internationalen Astronomischen Union no anerkannt.
El Bedeutung el Julianischen Tagesangabe en el heutigen Astronomie liegt para una en el Möglichkeit uno
kompakten, eindeutigen Zeitangabe, para otro en el einfachen Angabe y Berechnung de Zeitdifferenzen,
Perioden usw.
El Julianische Tageszählung wurde 1581 de el französischen Gelehrten Joseph Justus Scaliger
(en seinem Werk Opus novum de emendatione temporum) eingeführt, una eindeutige Zeitzählung sin negative
Jahreszahlen a obtener. Dazu mußte el Anfang el Zeitzählung genügend weit en el Vergangenheit en
vorhistorischen Veces mentira. Scaliger konstruierte primero una 7980 Jahre währende Julianische Período,
indem él folgende Zyklen kombinierte:
el 28jährigen Sonnenzyklus, en el se (en el Julianischen Kalender) el Kalenderdaten en denselben
Wochentagen wiederholen (en el Gregorianischen Kalender wäre dieser Zyklus 400 Jahre lang);
el 19jährigen Metonischen Zyklus, en el el Mondphasen y Finsternisse a nahezu denselben
Kalenderdaten wiederholen; y
el 15jährigen Indiktionszyklus, el en el Römischen Reich a Steuererhebung y Volkszählung verwendet wurde
y, beginnend con el 25.Dezember 312 n.Chr, a fortlaufenden Datierung a en el heutige Tiempo diente.
Das letzte Jahr, en el todos drei Zyklen gemeinsam una neuen Durchlauf begannen, war 4713 v. Chr.
Den 1. Januar dieses Jahres legte Scaliger como Beginn su Zeitrechnung fest. Für el meisten Menschen
el damaligen Epoche war dieses Datum allerdings fiktiv, como después de ihrem Glauben el Welt sólo wesentlich später
erschaffen wurde. Scaliger incluso datierte el Erschaffung el Erde el Jahr 3267 v.Chr.
Der Algorithmus stellt se entonces folgendermaßen dar:
Y = Jahr, M = Monat (Januar = 1, Februar = 2, etc.),
D = Tag (eventuell con Tagesbruchteilen)
Ist M > 2 lasse Y y M unverändert.
Ist M = 1 oder M = 2 entonces
Y = Y - 1
M = M + 13
Im Gregorianischen Kalender rechnet uno más:
A = INT (Y/100)
B = 2 - A + INT (A/4)
Im Julianischen Kalender es B = 0!
Das gesuchte JD es entonces:
JD = INT (365.25 * (Y + 4716))
+ INT (30.6001 * (M + 1)) + D
+ B - 1524.5
Das Programa para Berechnen des Julianischen Datums stellt se entonces folgendermaßen dar.
Beachten Sie, daß wegen el Besonderheit des Julianischen Datums el Tag no como Integer,
pero como Gleitpunktzahl dargestellt se.
Im Programa es todavía una zweites Unterprogramm enthalten, el el JD otra vez en unser gewohntes Datumsformat,
el Gregorianische Datum, umrechnet:
KompilierenMarcaSeparación#include <stdio.h>
#include <stdlib.h>
struct datum
{
double tag;
int monat;
int jahr;
};
double julian_day(double day, int month, int year);
struct datum gregorian_date(double jday);
int main(void)
{
int tag, monat, jahr;
double jd;
struct datum dat;
printf(Tag, Monat und Jahr eingeben: );
scanf(%d %d %d,&tag, &monat, &jahr);
jd = julian_day(1.0*tag, monat, jahr);
printf(
Julianischer Tag fuer den %d.%d.%d = %1.2f
,
tag, monat, jahr, jd);
dat = gregorian_date(jd);
printf(
Zurueckgerechnet: %1.0f.%d.%d
, dat.tag, dat.monat, dat.jahr);
return 0;
}
/* Julianischer Tag (>=1):
* Gegeben: tag, monat, jahr
*
* Die gregorianische Kalenderreform wird beruecksichtigt (der Tag, der
* auf den 4. Oktober 1582 folgt ist der 15. October 1582
* Tage nach dem 15. Oktober 1582 werden als Gregorianischer Kalender
* bezeichnet. Der Julianische Tag beginnt um 12 Uhr GMT (Mittag).
* Um beliebige Uhrzeiten beruecksichtigen zu koennen, werden die Tage
* nicht als Integer- sondern als Gleitpunktzahlen angegeben.
*/
double julian_day(double day, int month, int year)
{
int atmp, btmp, monthp, yearp;
double ctmp;
if (month > 2)
{
monthp = month + 1;
yearp = year;
}
else
{
monthp = month + 13;
yearp = year - 1;
}
if ((year > 1582) || (year == 1582 && month >= 10)
|| (year == 1582 && month ==10 && day >= 15))
{
atmp = year / 100;
btmp = 2 - atmp + (atmp / 4);
}
else
btmp = 0;
atmp = 365.25 * yearp;
ctmp = atmp;
atmp = 30.6001 * monthp;
ctmp = ctmp + atmp;
return (ctmp + day + 1720994.5 + btmp);
}
/* gregorian_date: Umrechnung Julianischer Tag
in (Tag, Monat, Jahr) */
struct datum gregorian_date(double jday)
{
int atmp, btmp, ctmp, dtmp, etmp, gtmp, ztmp;
double ftmp;
struct datum dd;
ztmp = jday + 0.5;
ftmp = (jday + 0.5) - ztmp;
if (ztmp >= 2299161)
{
gtmp = (ztmp - 1867216.25) / 36524.25;
ctmp = gtmp / 4;
atmp = ztmp + 1 + gtmp - ctmp;
}
else
atmp = ztmp;
btmp = atmp + 1524;
ctmp = (btmp - 122.1) / 365.25;
dtmp = 365.25 * ctmp;
etmp = ((btmp - dtmp) / 30.6001);
ztmp = 30.6001 * etmp;
dd.tag = btmp - dtmp - ztmp + ftmp;
if (etmp > 13.5)
dd.monat = etmp - 13;
else
dd.monat = etmp - 1;
if (dd.monat > 2.5)
dd.jahr = ctmp - 4716;
else
dd.jahr = ctmp - 4715;
return(class=s4 href='./../../funktionsreferenzen/XProfan/dd/'>dd);
}