[Monkey] Kalender Differenzen
Übersicht Andere Programmiersprachen Codearchiv & Module
DukeS87Betreff: Kalender Differenzen |
Sa, Feb 28, 2015 14:45 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 |
Sa, Feb 28, 2015 23:32 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 |
So, März 01, 2015 11:35 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 |
So, März 01, 2015 11:53 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 |
So, März 01, 2015 13:39 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 |
So, März 01, 2015 14:02 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 |
So, März 01, 2015 15:29 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 |
So, März 01, 2015 17:00 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. I den 27 Jahren gab es ja bereits 11 Schaltsekunden. |
||
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 Andere Programmiersprachen Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group