Domino 9 und frühere Versionen > Entwicklung

Datum in Julianisches Dastum umwandeln

(1/3) > >>

designi:
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?

m3:
Ja, Wikipedia 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

--- Ende Code ---

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.

designi:
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??

thoge:
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)
--- Ende Code ---

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.
--- Ende Zitat ---

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

Ach so:


--- Zitat ---Beispiel: aus 10.12.2007 wird 07344
--- Ende Zitat ---

aus 10.12.2007 wird 2454445

HTH

Thomas

designi:
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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln