Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: designi am 10.12.07 - 09:19:55

Titel: Datum in Julianisches Dastum umwandeln
Beitrag von: designi am 10.12.07 - 09:19:55
Hallo,

ich habe ein Feld, dass das Kalender-/Uhrzeit-Steuerelement benutzt und somit das ausgewählte Datum anzeigt. Nun möchte ich ein weiteres Feld haben, dass das eben gewählte Datum in das Julianische Datum berechnet.

Beispiel: aus 10.12.2007 wird 07344

Kann mir jemand helfen?
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: m3 am 10.12.07 - 09:23:50
Ja, Wikipedia (http://de.wikipedia.org/wiki/Julianisches_Datum#Berechnung_aus_dem_Kalenderdatum) ist Dein Freund!

Das astronomische Julianische Datum kann nach dem folgendem Algorithmus aus einem im Julianischen oder Gregorianischen Kalender gegebenen Datum berechnet werden (das Julianische Datum darf nicht negativ sein):

Code
   wenn Monat>2 dann  Y = Jahr, M = Monat
                sonst Y = Jahr-1, M = Monat+12
    
   D = Tag 
    
   H = Stunde/24 + Minute/1440 + Sekunde/86.400
    
   wenn Gregorianischer_Kalender dann  A = Int(Y/100), B = 2 - A + Int(A/4)    // gregorianisch
                                 sonst B = 0                                   // julianisch
     
   JD = Int(365,25*(Y+4716)) + Int(30,6001*(M+1)) + D + H + B - 1524,5

Die Variablen Tag, Monat, Jahr, Stunde, Minute und Sekunde enthalten die Bestandteile des zu bearbeitenden Datums, das Ergebnis wird in JD zurückgegeben. Die Funktion Int schneidet die Nachkommastellen einer Zahl ab.
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: designi am 10.12.07 - 09:38:06
Jo ein ganz großes Puuhhhhhh,

aber erstmal danke!!!

Wie soll ich das jetzt am besten schnellstmöglich im Feld als Eingabeumsetzung bzw. Formel realisieren??
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: thoge am 10.12.07 - 17:08:18
Hallo Designi,

ich habe mal in der journal-Datenbank zwei zusätzliche Felder gebastelt: datum und test.

dann habe ich eine schaltfläche erstellt, hinter der sich folgender code versteckt:

Code
Jahr := @Year(datum);
Monat := @Month(datum);
Tag := @Day(datum);

y := Jahr + ((Monat - 2,85) / 12);
A := @Integer(367 * y) - 1,75 *@Integer( y) + Tag;
B:=  @Integer(A) - 0,75 * @Integer(y / 100);
JD := @Integer(B) + 1721115;

@SetField( "test" ; JD)

Das ist im Übrigen die Berechnungsformel für das chronologische Julianische Datum, das Du ebenfalls in dem Wiki-Artikel findest (für die ausführlichere Berechnung fehlt mir gerade die Zeit, müsste aber ähnlich funktionieren).

Zitat
Chronologisches Julianisches Datum [Bearbeiten]

Das chronologische Julianische Datum wird ebenfalls ab dem 1. Januar –4712 gezählt, aber nur in ganzzahligen Tagesschritten. Es entspricht dem astronomischen Julianischen Datum für 12h mittags.

Berechnung [Bearbeiten]

Der folgende Pseudocode berechnet aus einem Datum im gregorianischen Kalender das chronologische Julianische Datum:

   y  = Jahr + (Monat - 2.85) / 12
   A  = Int(367 * y) - 1.75 * Int(y) + Tag
   B  = Int(A) - 0.75 * Int(y / 100)
   JD = Int(B) + 1721115

Die Variablen Tag, Monat und Jahr enthalten die Bestandteile des zu bearbeitenden Datums, die Variablen y, A und B sind Hilfsgrößen der Berechnung und das Ergebnis wird in JD zurückgegeben. Int steht für das Abschneiden der Nachkommastellen.

Das führt (bei mir zumindest) zu den im Artikel erwähnten Ergebnissen.

Ach so:

Zitat
Beispiel: aus 10.12.2007 wird 07344

aus 10.12.2007 wird 2454445

HTH

Thomas
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: designi am 11.12.07 - 09:34:05
hey thoge,

einfach nur geil. fürs erste. :-)

jetzt muss ich natürlich die Zahl 2454445 zum Ergebnis 7344 bringen.

7 ergibt sich ja aus der Endziffer Jahreszahl und 344 ist der Tag im Jahr.

Hast Du noch eine Idee? Bin ziemlich sicher bei Dir!!!

Gruß designi
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: koehlerbv am 11.12.07 - 09:48:11
Was soll das? Erst wird nach dem Julianischem Datum gefragt, jetzt geht es auf einmal um eine ominöse 7344 ...
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: tks am 11.12.07 - 13:17:26
Ich glaube er will sowas (http://www.brauchbar.de/wd/artikel/19.html).

Das ist zwar jetzt JavaScript, aber die Berechnungsgrundlagen sind da drin.
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: thoge am 11.12.07 - 13:24:56
Hallo disigni,

mit meinem Lösungsansatz hast Du ja die fortlaufende Zahl des Tages im julianischen Kalender.

Dann kannst Du Dir ähnlich den 01.01. eines jeden Jahres errechnen lassen.

Vom Ergebnis des heutigen Tages substrahierst Du den 01.01. des entsprechenden Jahres und addierst hierzu eine 1, damit die Nummerierung auch bei 1 beginnt.

Damit hast Du dann in Deinem Bespiel die 344.

Die Jahreszahl kannst Du z.B. mit einer @Right-Formel basteln.

Dann setzt Du die beiden Ergebnisse zusammen und bist fertig.

Ein Tip noch: Es gibt feststehende Begriffe. Der Julianische Kalender ist ein solcher.

Was Du willst, ist eine einfache Berechnung des laufenden Tages eines Jahres, wobei Du den julianischen Kalender als Berechnungsgrundlage (weil mit den Ergebnissen einfacher zu rechnen ist).

Dir ist schon klar, dass ich Dir keine fertige Lösung präsentieren möchte, aber die Hinweise sind glaube ich, verständlich.

HTH

Thomas

@tks

es scheint, wir hätten ähnliche Quellen  ;)
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: tks am 11.12.07 - 13:30:05
mein Freund heisst "Google"  ;D
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: thoge am 11.12.07 - 13:35:50
Zufälle gibt's, den kenne ich auch  ;D ;D
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: designi am 12.12.07 - 10:05:27
Hallo nochmal,

allen beteiligten ein herzliches Dankeschön. Habe es jetzt mit einigen Formeln hinbekommen.

Gruß
Designi
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: thoge am 12.12.07 - 10:18:36
Hallo Designi,

gerne geschehen.

Könntest Du uns Deine Formelsammlung oder Lösungsweg bitte noch mitteilen.

Ich denke, das die Aufgabenstellung eine schöne Fingerübung ist und andere an der Art und Weise, wie man mit "mathematischen" Problemen innerhalb Notes umgehen kann, partizipieren können.

Vielen Dank dafür.

Thomas
Titel: Re: Datum in Julianisches Dastum umwandeln
Beitrag von: designi am 12.12.07 - 11:18:24
Jo aber klar.

So gehts:

Jahr:= @Year(Feld);
Monat:= @Month(Feld);
Tag:= @Day(Feld);

y:= Jahr + ((Monat - 2,85) / 12);
A:= @Integer(367 * y) - 1,75 *@Integer(y) + Tag;
B:= @Integer(A) - 0,75 * @Integer(y / 100);
JD:= @Integer(B) + 1721115;

z:= Jahr + ((1 - 2,85) / 12);
C:= @Integer(367 * z) - 1,75 *@Integer(z) + 1;
D:= @Integer(C) - 0,75 * @Integer(z / 100);
JB:= @Integer(D) + 1721115;

JK:= @Integer(1000) * (@Integer(Jahr - 2000));

x:=@Integer(JD) - @Integer(JB) + @Integer(JK);

@SetField("Ausgabefeld";x)


Das ganze wird im Ausgabefeld angezeigt.
Die Formel selber steht in einer Aktions-Schaltfläche.

Gruß
Designi