Formel für Datum -> mjd gesucht
- Erdnussnase
- TAP-Guru

- Beiträge: 7067
- Registriert: Fr 9. Dez 2005, 12:01
Formel für Datum -> mjd gesucht
Hat jemand eine Formel bzw. ein Stückchen Code wie ich von einem gegeben Datum auf die Topf eigene mjd Darstellung komme ?
Würde mir das Leben unter der IDE erleichtern.
Würde mir das Leben unter der IDE erleichtern.
Kein Support oder Fragen zur Registrierung per PN !
http://www.iTiNa.de
aber bei dem Universum bin ich mir noch nicht ganz sicher.?
Albert Einstein
- Erdnussnase
- TAP-Guru

- Beiträge: 7067
- Registriert: Fr 9. Dez 2005, 12:01
Das ich das nicht auf dem Topf brauche, sondern unter IDE (Windoof).
Kein Support oder Fragen zur Registrierung per PN !
http://www.iTiNa.de
aber bei dem Universum bin ich mir noch nicht ganz sicher.?
Albert Einstein
- jkIT
- TFtool-Guru

- Beiträge: 3225
- Registriert: Sa 10. Dez 2005, 18:26
- Receivertyp: TF4000 & TF5000MP & SRP-2410
Versuch mal das, ist Pascal, aber bestimmt nicht schwehr in eine andere Programmiersprache zu übesetzen.
Code: Alles auswählen
type
TTFdatetime = packed record
swMJD : WORD;
hour : Byte;
min : Byte;
end;
function convert_date_time(year, month, day, hour, minute :integer; var date : TTFdatetime): boolean;
// EN 300 468 Annex C - Conversion between time and date conventions
// from www.ETSI.ch
const
month_to_days : array[1..13] of integer = (0,31,59,90,120,151,181,212,243,273,304,334,365);
var
day_in_year : integer;
iMJD : integer;
y, m, d, hr, min : integer;
begin
day_in_year := day + month_to_days[month];
if ((month > 2) and (year mod 4 = 0) and ((year mod 100 <> 0) or (year mod 400 = 0))) then
inc(day_in_year);
iMJD := (year - 1901) * 365 + ((year - 1901) div 4) -
((year - 1901) div 100) + ((year - 1601) div 400) +
day_in_year + 15384;
date.swMJD := swapWord(word(iMJD)); // change Endian for PowerPC and Mips
date.hour := hour;
date.min := minute;
// check_date_time
result := convert_date_time(date, y, m, d, hr, min) and
(y = year) and
(m = month) and
(d = day);
end;
oder die tfdll.dll Funktionen verwenden:
Gruß
Aldarin
Code: Alles auswählen
extern "C" __declspec(dllimport) byte ExtractMjd(word mjd, word *year, byte *month, byte *day, byte *weekDay);
extern "C" __declspec(dllimport) word MakeMjd(word year, byte month, byte day);Aldarin
- Harvey
- iTina-Promoter und Kuhinteressent

- Beiträge: 3894
- Registriert: So 11. Dez 2005, 22:34
- Receivertyp: 0x1388 PVR
- Receiverfirmware: 13.09.2005
- Wohnort: Planet Erde, Milchstraße
An der Pascal-Routine stimmt was nicht (oder ich kann nicht Rechnen).
Für den 12.11.2006 soll 54051 rauskommen, ich errechne aber 54084.
Topfield hat's so implementiert (etliche maschinencodes zusammengefasst):
Für den 12.11.2006 soll 54051 rauskommen, ich errechne aber 54084.
Topfield hat's so implementiert (etliche maschinencodes zusammengefasst):
Code: Alles auswählen
if (Month==1 || Month==2) S4=1 else s4=0;
t9 = Year - s4;
t9 = t9 * 36525;
t9 = t9 + 36525 - 1901*36525;
t9 = t9 / 100 + Day;
t7 = s4 * 12 + Month + 1;
t7 = (t7 * 306001) / 10000;
return t9 + t7 + 14956;
Gruss
Harvey
Harvey
- Erdnussnase
- TAP-Guru

- Beiträge: 7067
- Registriert: Fr 9. Dez 2005, 12:01
Besten Dank,
Da kann ich mir ja jetzt das beste raussuchen
Da kann ich mir ja jetzt das beste raussuchen
Kein Support oder Fragen zur Registrierung per PN !
http://www.iTiNa.de
aber bei dem Universum bin ich mir noch nicht ganz sicher.?
Albert Einstein

