[Monkey] Kalender Differenzen
Übersicht

DukeS87Betreff: Kalender Differenzen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, da ich für ein aktuelles Projekt die Differenz zwischen 2 Tagen in Sekunden brauchte, habe ich mich mal im Internet schlau gemacht, wie man da was zu berechnen hat.
Im Forum: http://www.a-m-i.de/tips/datetime/datetime.php hab dazu sehr nützliche Algorithmen gefunden. (allerdings in C++) Meine eigentliche Arbeit lag jetzt quasi nur darin, das in Monkey zu übersetzen. Und es funktioniert. Ein paar Werte habe ich mithilfe der Seite: http://www.knaak.bplaced.de/So...hp#Rechner überprüft, und die Zeit seit meinem Geburtstag ist auf die Sekunde Deckungsgleich mit den Werten auf der Homepage. (Daher gehe ich erstmal davon aus, dass die Funktionen, zumindest im Zeitraum -27 Jahre bis heute funktionieren. (Ihr könnt das ganze ja auch mal ausprobieren.) BlitzMax: [AUSKLAPPEN]
Hier ein Kleines Beispielprogramm: BlitzMax: [AUSKLAPPEN]
|
||
DukeS87Betreff: Zusatz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, ich hab schonmal die nächste funktion hinzugefügt: Wochentag.
BlitzMax: [AUSKLAPPEN]
Ich bin leider kein C++ Profi, daher mal ne kleine Frage am Rande, weiss zufällig jemand, was die Aufrufe _ASSERT(uTag > 0); _ASSERT(uTag <= 31); _ASSERT(uMonat > 0); _ASSERT(uMonat <= 12); bewirken? ich habe sie einfach mal auskommentiert, und scheint trotzdem zu funktionieren. |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bin auch kein C++ Mensch, aber wenn ich mich nicht irre, macht die Funktion folgendes: Im Debug-Modus prüft sie, ob der Ausdruck wahr ist, sonst bricht sie die Ausführung des Programms mit einer Fehlermeldung ab. | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jup, das ist genau was es tut. Assert ist zur Input Validation da, stellt also sicher, dass man keinen Mist eingibt. Allerdings ist Assert(Tag<=31) etwas nutzlos, da so z.B. ein 31.2. durchgeht. Da müsste das Assert schon etwas komplexer sein. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Frage: Müsste bei sowas nicht eigentlich auch die Schaltsekunde mit berücksichtigt werden? Schließlich wurde ja in der Zwischenzeit alle paar Jahre mal eine Sekunde addiert - oder anders ausgedrückt: übersprungen (Oder wars doch andersrum?). Scheinen demnach aber der Rechner auf der Website auch nicht zu berücksichtigen. | ||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gab ein paar Schaltsekunden, ja. Aber diese sind völlig unregelmässig (Quelle: http://de.wikipedia.org/wiki/S...ltsekunden). Daher ist die Beachtung der Schaltsekunden technisch schon mal gar nicht so trivial. Und das bezieht sich jetzt nur auf die bereits vergangenen Schaltsekunden.
Ausserdem verbietet ja niemand die Verwendung der überholten Sonnensekunde. Die Frage auf "Müsste..?" würde ich deshalb mit nein beantworten. Bin aber auch kein Metrologe ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
DukeS87 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kommt halt drauf an wie exakt man sein moechte. Aber ueberlege mal, angenommen alle 4 jahre kommt eine schaltsekunde, waere der kalender nach 4*60 jahren um 1 minute daneben. Bis der kalender also um einen halben tag falsch laeuft, muessten 4*60*60*12 jahre vergehen. | ||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Schaltsekunden müsste man fest einprogrammieren, anders ginge es nicht. Dürfte nicht so schwer sein.
Ich erwähnte das Ganze aber eh nur, weil ja eben nach einer sekundengenauen Berechnung gefragt worden war. ![]() ![]() ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group