Seite 1 von 3

Lebenszeit in Sekunden herausfinden

Verfasst: 09.11.2006 13:40
von JohnMC
Hoi Leute!

Ich hab mit meinen Kumpel gewettet, dass ich bis morgen ein Programm geschreiben hab, das die Zeit eines beliebigen Tages (zB sein Geb.Datum) bis jetzt in Sekunden ausrechnen kann.

Ich hab mir überlegt, dass ich einfach die Sekunden von diesem Tag in Sekunden ausrechne, und dann die Zeit seit dem Jahresanfang bis einen Tag vorher. Dann noch die übrigen Jahre in Sekunden und alles wird zusammen gezählt.

Das Problem ist, dass es da ja noch die Schaltjahre und den Februar mit seinen 28 Tagen gibt... /:->

Habt ihr ne Idee, wie ich das ausrechnen könnte?
Oder hat jemand sowas schion mal programmiert??

Grüße...JohnMC

Verfasst: 09.11.2006 13:43
von Kaeru Gaman
schau dir mal die Date-lib von PB an....

das normale datums-format wird in millisekunden (oder sekunden?) berechnet,
und muss in formatierungsfunktionen übergeben werden, um normal nach tag/monat auszusehen...

also, eigentlich sollten dir die grundfunktionen alles geben, was du brauchst, schau man in der Help von PB unter Date... ;)

Verfasst: 09.11.2006 16:52
von Karl
1. Ereignisse der Vergangenheit

Die Wette verlierst du, es sei denn du kennst die aktuelle - natürlich sekundengenaue - Geburtszeit deines Kumpels.

Ja, ja - der Schein der Genauigkeit :mrgreen:

2. Ereignisse in der Zukunft

Im Prinzip das gleiche, obwohl man vereinfacht annehmen könnte Tag X beginnt mit 00:00:00. Allerdings kleines Problem: Begrenzung des Datentyps.

Longs bei 2^31 => ca. 68 Jahre Begrenzung.

Damit ließe sich wohl nicht die Frage beantworten, wieviel Sekunden seit Beginn des ersten Weltkrieges bis zum 04.05.2043 vergangen sind. Das gilt entsprechend für 1.


Gruß Karl

Verfasst: 09.11.2006 17:08
von JohnMC
@ Kaeru Gaman:
Thx, damit hab ichs hingekriegt! :allright:

@Karl:
Wir gehen davon aus, dass er um 00:00:00 Uhr geboren ist, das haben wir auch in der Wette ausgemacht, weil er seine genauen Geburtszeiten auch nicht weis...und er ist noch nicht ganz 68....heute ist er 14 geworden :wink:

Ich zeig euch mal den Code wenn mein Notebokk wieder meinen USB-Stick annimt, des stresst grad voll rum...!!

Grüße...JohnMC

Verfasst: 09.11.2006 17:57
von AND51
@ Kaeru: Verwirr den armen Jungen nicht so, die Date-Lib rechnet nur in ganzen Sekunden. Wüsste man, wenn man öfter damit arbeiten würde :wink:

Ich würde aus dem Stehgreif mal behaupten, ich wäre

Code: Alles auswählen

Debug Date(1988, 10, 27, 10, 30, 0)-Date()
Sekunden alt, wenn ich am 27. 10. 1988 um ca. 10:30 geboren bin. (Hoffe, ich habe im Code keinen Denkfehler eingebaut...)

So einfach kann's gehen, JohnMC. :allright:

Verfasst: 09.11.2006 18:04
von #NULL
der denkfehler besteht nur darin, dass du gerade stirbst und in Abs(x) sekunden geboren wirst ..also nur noch die subtrahenden vertauschen.

Verfasst: 09.11.2006 18:07
von AND51
Huch, ja stimmt! Daran habe ich nicht gedacht.

Ich sterbe? Ja, ich fühl mich auch ganz schön tot, nach 9 Schulstunden, davon die letzten beiden Schweißtreibenden Sport... :coderselixir:

Verfasst: 09.11.2006 18:37
von Andreas
So einfach kann's gehen, JohnMC. :allright:
So einfach ist das dann doch nicht, denn danach bin erst 3 Jahre alt.
Die Date-Lib funktioniert erst ab 1970.
Für einen gescheiten Sekunden-Rechner nicht gerade tauglich :cry:

Verfasst: 09.11.2006 18:46
von jear

Code: Alles auswählen

Debug FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", 0)
Man beachte!
Daten vor dem 1. Januar 1970 sind mit den PB-Datumsfunktionen nicht zu berechnen!

Code: Alles auswählen

Debug FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", 31*24*60*60)
Ein Monat später ist der 1. Februar 1970!

Re: Lebenszeit in Sekunden herausfinden

Verfasst: 09.11.2006 19:09
von Andreas
JohnMC hat geschrieben: Ich hab mit meinen Kumpel gewettet, dass ich bis morgen ein Programm geschreiben hab, das die Zeit eines beliebigen Tages (zB sein Geb.Datum) bis jetzt in Sekunden ausrechnen kann.
Ich schätze die Wette ist verloren.
Da sind nicht nur die Schaltjahre ( die allerdings kein Problem sind, siehe Code ), da war auch noch Papst Gregor, der hat im Jahr 1582 einfach mal die 10 Tage zwischen dem 4. und 15. Oktober ausfallen lassen.
Das ganze Thema ist also etwas komplexer.
Und da Du ja von einem beliebigen Tag gesprochen hast....

Code: Alles auswählen

Procedure.w IsLeapyear(Jahr.w)
    ;Schaltjahr bestimmen
    ;Rueckgabe = 1 wenn Schaltjahr, sonst Null
    Result.w =0
    If (MOD(Jahr,4)=0 And MOD(Jahr,100)<>0) Or (MOD(Jahr,400)=0)
        Result = 1
    EndIf
    ProcedureReturn Result
EndProcedure