Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Neuerer Beitrag  |  Älteres Thema 
 Zeitdifferenz berechnen
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   24.08.20 19:20

Hallo zusammen, er ist wieder mal da! :-)

Ich möchte die Spanne zwischen zwei Zeitpunkten berechnen. Dazu hatte ich mal eine 2. Meter lange Funktion (vor langer Zeit). Doch diese war leider fehlerhaft.

Lt. Hilfe müsste das doch auch mit dt("CompareTime", D1, D2) funktionieren.

Da liegt mein Problem: die Start/Endezeiten stehen in Editfeldern.
D1/D2 sind in der Hilfe als Float beschrieben.
Was muss man tun um die Zeitwerte der Editfelder zu wandeln bzw. gibt es eine andere Lösung?

Irgendwie stehe ich hier auf dem Schlauch. :grin:

Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Zeitdifferenz berechnen
Autor: Arndt Lindner (80.150.206.---)
Datum:   25.08.20 08:33

Das geht mit der Funktion dt("setDate",S). S ist der mit gettext() aus dem Editierfeld ausgelesene Datumsstring.



Beitrag beantworten
 
 Re: Zeitdifferenz berechnen
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   25.08.20 10:11

Guten Morgen Arndt,
ich habe das mal getestet. und mit der Funktion den Wert (Float) von "12:23" ermittelt ( 0.515972)).

Bei der Ausgabe, z.B.: print @dt("getTime", 0.515972)
wird aber die aktuelle Zeit ausgegeben.
:roll:

Wo liegt der Fehler?

Liebe Grüße Werner

Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Zeitdifferenz berechnen
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   25.08.20 11:00

Ähm ... kaum macht man es richtig, schon klappts:

print @dt("setTime", "14:22") ... Ergebnis: 0.598611

print @dt("getTime",0,0.598611)
Der Typ der Darstellung (Integer) hat gefehlt.

Jedoch ist das Ergebnis nicht ganz genau (1 min) Abweichung.
:roll:

L.G.

Werner

Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Zeitdifferenz berechnen
Autor: Arndt Lindner (80.150.206.---)
Datum:   25.08.20 17:17

Wenns um Zeiten und nicht um Datumswerte geht ist natürlich gettime und settime angesagt. Sorry, war mein Fehler.
Noch ein Hinweiss: Die Datums- und Zeitwerte werden von den Datums/Zeitfunktionen als Float-Variable verarbeitet. Dabei steckt immer das Datum und die Zeit in einem Wert. Das Ganze ist in der Profan-Hilfe unter dem Stichpunkt "!Now" recht gut erklärt.



Beitrag beantworten
 
 Re: Zeitdifferenz berechnen
Autor: Michael Wodrich (---.customer.vsm.sh)
Datum:   26.08.20 15:18

XProfan 14

    Declare string S1,S2
    Declare float d1,d2, erg
 


Mit

    S1 = GetText$(hEdit1)
    S2 = GetText$(hEdit2)
 


wird der Text aus dem Editfeld gelesen.

Mit

    d1 = dt("SetTime",S1)
    d2 = dt("SetTime",S2)
 


werden diese Zeiten in Floats verwandelt.
dt("CompareTime",d1,d2) liefert allerdings einen Signum-Wert zu Vergleich.
Also -1 | 0 | +1

Mit den Float-Zeiten kann aber einfach gerechnet werden.

    erg = d2 - d1
 


Ergebnis anzeigen mit:

    print dt("DateTimeStr", "hh:nn.ss", erg)
 


Übrigens:

    print dt("GetTime", 2, d1)
    print dt("GetTime", 2, d2)
 


liefert auch die Sekunden mit. Aber die Formatierung mit DateTimeStr ziehe ich vor.

--
Programmieren, das spannendste Detektivspiel der Welt.
Programmierumgebung: | XProfan (neueste) | Win (neueste)


Nachricht bearbeitet (26.08.20 15:20)

Beitrag beantworten
 
 Re: Zeitdifferenz berechnen
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   27.08.20 07:29

Moin,
vielen Dank für die Infos!!!! Manchmal hat man beim Lesen der Hilfe Tomaten auf den Augen! :-D

Hier eine ebenfalls interessante Lösung (die hab ich im Forum entdeckt und etwas angepasst):

 Proc DeltaZeit
 Parameters Z1$,Z2$
 declare z1%,z2%,h1%,h2%,h3%,m1%,m2%,m3%,zd%,h1&,h3$,m3$,out$
 h1%=@val(@Left$(Z1$,2))
 m1%=@val(@Right$(Z1$,2))
 h2%=@val(@Left$(Z2$,2))
 m2%=@val(@Right$(Z2$,2))
 z1% = (h1% * 60) + m1%
 if h2% < h1%
 z2% = ((h2%+24) * 60) + m2%'falls Endzeit die 23:59 überschreitet
 else
 z2% = (h2% * 60) + m2%
 endif
 zd% = z2% - z1%
 h3% = INT(zd%/60)
 m3% = zd% - h3% * 60
 h3$=@Str$(h3%)
 m3$=@Str$(m3%)
 case len(h3$)=1: h3$="0" + h3$
 case len(m3$)=1: m3$="0" + m3$
 out$=h3$,":",m3$
 Return out$
 EndProc
 


Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Zeitdifferenz berechnen
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   27.08.20 18:22

Hier noch eine Lösung :
 Cls
 ' Von Julian Schmidt
 ' https://xprofan.net/intl/de/forum/zeitabstaende-anhand-von-zeitstempeln-ausrechnen/#85699
 
 Def @Date(1) dt("setDateTime",val(substr$(@$(1),3,".")), val(substr$(@$(1),2,".")), val(substr$(@$(1),1,".")), val(substr$(substr$(@$(1),-1," "),1,":")), val(substr$(@$(1),2,":")), val(substr$(@$(1),3,":")), 0)
 Def @DTBetween(3) If(@$(1)="Year",1899,If(@$(1)="Month",12,If(@$(1)="Day",30,0)))-dt("get"+@$(1), @!(2)-@!(3))*If(@$(1)="Hour",-1,If(@$(1)="Min",-1,If(@$(1)="Sec",-1,1)))
 CLS
 Var Zeit1!=Date("24.12.2012 18:00:00")
 Var Zeit2!=Date("24.12.2012 14:10:00")
 
 print
 print DTBetween("Year",Zeit1!, Zeit2!);" Jahr(e)"
 print DTBetween("Month",Zeit1!, Zeit2!);" Monat(e)"
 print DTBetween("Day",Zeit1!, Zeit2!);" Tag(e)"
 print DTBetween("Hour",Zeit1!, Zeit2!);" Stunde(n)"
 print DTBetween("Min",Zeit1!, Zeit2!);" Minute(n)"
 print DTBetween("Sec",Zeit1!, Zeit2!);" Sekunde(n)"
 
 Waitkey


H.Brill
XProfan X4 + FreeProfan

Beitrag beantworten
 Foren-Liste  |  Baumstruktur   Neuerer Beitrag  |  Älteres Thema 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org