Convert Gregorianisches Datum -> Julianisches Datum

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Convert Gregorianisches Datum -> Julianisches Datum

Beitrag von michael baum ( / / 0 / 3 ) »
hi,

gibt es im sap einen funktionsbaustein/bapi für
die berechnung des julianischen datums ?

thx

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Michael,

scheint eher nicht der Fall zu sein.
Ich habe mal nach *DATE* bzw. *JUL* gesucht. Bei der Treffermenge von *DATE* hat die weitere Suche nach 'greg' ('jul' hat garnichts gefunden) nur den CALENDER_FOR_F4_DATE gefunden, der aber nicht die gewünschte Funktion bietet.
PS: Release ist 4.7

Ich wüsste nicht einmal den korrekten Umrechnungsalgorithmus. :(

Neugier:
für was benötigst Du denn die Umrechnung?
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Hmmm - ABAP rechnet doch intern auch mit sowas ähnlichem wie dem julianischen Datum. Aber SAP benutzt als Referenzpunkt den 1.1.0001 (bzw. 0 = ein Tag davor ) und der julianische Kalender ein Datum irgendwo vor ca. 6500 Jahren.
Eigentlich sollte eine Umrechnung ( von aktuelleren Daten ) dann durch addieren einer Konstante möglich sein.

Normalerweise wird doch das julianische Datum benutzt um den Abstand diverser Daten voneinander bestimmen zu können. Aber das kann ABAP doch von sich aus.

Code: Alles auswählen.

REPORT zsstest3 LINE-SIZE 500.


DATA: d1 TYPE sydatum VALUE '20050101',  " 1.1.2005
      d2 TYPE sydatum VALUE '20050606',  " 6.6.2005
      i  TYPE i.

END-OF-SELECTION.
  i = d2 - d1.

  WRITE:/ d2,'zu',d1,': Abstand =',(4) i,'Tage'.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

umrechnung

Beitrag von michael baum ( / / 0 / 3 ) »
hab mal im netz gesucht und gefunden :

TZ: Tageszählung im jeweiligen Stil, der 1.1.1 erhält TZ 1.
JD: Julianisches Datum, wie oben beschrieben.

function getJDjulianisch(d, m, y)
{
m -= 3;
if (m<0) {m += 12; y--};
TZ = floor (y * 365.25) + floor(m * 30.6 + 0.5) + d - 306;
JD = TZ + 1721423;
}
...und weiter, da ich den julianischen tag brauche:

function makeDatejulianisch(JD)
{
TZ = JD - 1721423 + 306;
jahr = floor((tz - 0.2) / 365.25);
rest = tz - floor(jahr * 365.25);
monat = floor((rest - 0.5) / 30.6);
tag = rest - floor(monat * 30.6 + 0.5);
monat += 3;
if (monat<12) {monat -=12; jahr++};
Datum = new Datum (tag, monat, jahr)
}

...das ganze jetzt noch in abap und fertig ;)

Re: umrechnung

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
michael baum hat geschrieben:TZ = floor (y * 365.25) + floor(m * 30.6 + 0.5) + d - 306;
*Grübel*
Das Juliansiche Datum kennt scheinbar nicht die Schaltjahrsregeln für Jahre, die durch 100 teilbar sind.

Beitrag von michael baum ( / / 0 / 3 ) »
Der julianische Kalender ist recht regelmässig. Lediglich die Bestimmung der durchschnittlichen Dauer des Monats wirft Probleme auf. Diese kann man dadurch umgehen, dass man den Monatsanfang auf den 1. März verlegt. Die Monate März bis einschliesslich Januar haben im Schnitt 30.6 Tage, die Dauer des Februars spielt nun keine Rolle mehr, da er am Jahresende liegt. Zwischen 1. März und 31. Dezember liegen in jedem Jahr, gleichgültig ob Schalt- oder Gemeinjahr, 306 Tage. Diese muss man am Ende der Rechnung von dem Ergebnis wieder abziehen.
[1]http://www.nabkal.de/umrechnung.html

Beitrag von jth ( / / 0 / 3 ) »
Hallo,

hier zwei Definitionen des julianischen Datums:

"Das Julianische Datum, abgekürzt JD, gibt die Zahl der Tage an, die seit dem 1. Januar 4713 v. Chr. 12:00 Uhr GMT (= JD 0) vergangen sind. Teile eines Tages (Stunden, Minuten, etc.) werden dabei in Nachkommastellen ausgedrückt."

"In der EDV und im Fernmeldewesen wird als Julianisches Datum oft auch die Zahl der Tage bezeichnet, die seit dem 1. Januar eines Jahres vergangen sind (1. Januar = 0 Tage)."
Beide Zitate stammen von wikipedia. (http://de.wikipedia.org/wiki/Julianisches_Datum)
Ich nehme an, die letzte Version ist gemeint; hierzu kannst Du den FB DAYS_BETWEEN_TWO_DATES benutzen oder
die paar Zeilen gleich selbst codieren.

Jürgen

convert

Beitrag von michael baum ( / / 0 / 3 ) »
absolut richtig. danke

Seite 1 von 1

Vergleichbare Themen

5
Antw.
2292
Views
Convert Datum in DB
von nkuhn » 15.03.2007 10:13 • Verfasst in ABAP® für Anfänger
4
Antw.
760
Views
Daten zwischen Datum A und Datum B
von cecslucas » 13.10.2022 09:44 • Verfasst in ABAP® für Anfänger
3
Antw.
2161
Views
Sprachabhängiges Datum
von quatschi » 06.01.2010 16:59 • Verfasst in ABAP® für Anfänger
6
Antw.
5694
Views
Mit Datum Rechnen
von Trulchen » 05.09.2012 08:47 • Verfasst in ABAP® für Anfänger
2
Antw.
2562
Views
Datum konvertieren
von Trulchen » 21.02.2014 13:28 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 787
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 787
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2402
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8986