Deutsch
Forum

Zeitabstände anhand von Zeitstempeln ausrechnen

 
- Seite 1 -



holmol93
Hallo miteinander

ich komme nicht mehr aus dem Fragen raus, wie man sieht....oO
Allerdings habe ich auch für diese Fragen ein wenig rumgeschaut und keine passende Antwort gefunden...

Die erste Sache:
Es geht darum, ob es möglich ist, anhand zweier Zeitstempel in der Form die dt("getdate",6) ausgibt, die Stundendifferenz zu errechnen.

Konkret dafür, um die Arbeitsstunden anhand von Ein- und Ausloggstempeln zu errechnen.

Damit man sich das besser vorstellen kann, ist im Anhang ein Screenshot der Stempelzeiten eines Benutzers von einem Arbeitstag.

Das zweite, ist eher ein kleines Problem.
Mangels Windows entwickle ich meine (Windows-) Xprofan Software mithilfe von WINE auf dem Mac.
Jetzt habe ich einmal meine Software auf einem Windows 7 PC getestet.
Optisch gefällt sie mir da deutlich besser *g* aber mein Problem ist, dass Choiceboxen nicht aufklappen. Auf der getesteten Windows 7 Maschine kann man die Choiceboxen anklicken und die Inhalte mit den Pfeiltasten durchscrollen, sie poppen aber nicht auf, so wie sie das eigentlich sollten.
Auf meinem Mac mit WINE funktioniert dies aber.

Die Choiceboxen werden ganz standardmässig erstellt und befüllt (mit Addstring), so wie das auch sein sollte. Im Internet habe ich nirgends einen solchen Fall gefunden... Hat jemand eine Idee?

Soo, mal wieder ein langer Text geworden... Die kompliziertesten Einfälle habe ich halt leider immer dann, wenn alle anderen schlafen ;)

Gruss aus Bern,
Danny

100 kB
Hochgeladen:12.07.2013
Ladeanzahl255
Herunterladen
 
12.07.2013  
 



 
- Seite 1 -



Thomas
Freier
Bin mir nicht sicher ob's nicht kürzer geht
CLS
Declare Zeit1$,Zeit2$,a$,b$,c$
Zeit1$="30.04.2013 19:15:10:00"
a$=substr$(Zeit1$,1," ")
b$=substr$(Zeit1$,-1," ")
Var a! = dt("setDateTime",val(substr$(a$,-1,".")), \
val( substr$(a$,2,".")), \
val( substr$(a$,1,".")), \
val( substr$(b$,1,":")), \
val( substr$(b$,2,":")), \
val( substr$(b$,3,":")), \
val( substr$(b$,-1,":")))
print dt("DateTimeStr", "dd.mm.yyyy'|'hh:nn:ss", a!)
Zeit2$="02.05.2013 19:00:00:00"
a$=substr$(Zeit2$,1," ")
b$=substr$(Zeit2$,-1," ")
Var b! = dt("setDateTime",val(substr$(a$,-1,".")), \
val( substr$(a$,2,".")), \
val( substr$(a$,1,".")), \
val( substr$(b$,1,":")), \
val( substr$(b$,2,":")), \
val( substr$(b$,3,":")), \
val( substr$(b$,-1,":")))
print dt("DateTimeStr", "dd.mm.yyyy'|'hh:nn:ss", b!)
print
Var c!=a!-b!
a$= dt("DateTimeStr", "dd.mm.yyyy'|'hh:nn:ss", c!)
print a$
' Null-Datum = 30.12.1899 0:0:0
b$=substr$(a$,1,"|")
c$=substr$(a$,-1,"|")
print b$
print c$
print
Set("Decimals",0)
print "von Zeit zu Zeit"
print str$(abs(30-val(substr$(b$,1,"."))))+" Tag(e)"
print str$(abs(12-val(substr$(b$,2,"."))))+" Monat(e)"
print str$(abs(1899-val(substr$(b$,-1,"."))))+" Jahr(e)"
print substr$(c$,1,":")+" Stunden"
print substr$(c$,2,":")+" Minuten"
print substr$(c$,-1,":")+" Sekunden"
waitinput
end
 
Gruß Thomas
Windows XP SP2, XProfan X2
12.07.2013  
 




Julian
Schmidt
Geht wohl in die Richtung. [...] 

Thomas sein Beispiel berechnet aber noch Tage, Montate und Jahre
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
12.07.2013  
 




holmol93
Hallo miteinander,

Dankeschön, hat perfekt geklappt

Für die paar Stunden, die es zu berechnen gilt, musste ich nichtmal die Routinen zum berechnen der Tage integrieren

Jetzt ist einfach noch das zweite Problem da:
Die Choiceboxen, die unter Windows 7 nicht aufklappen.

Habe dafür mal ein Beispiel als Screenshot eingefügt.

Gruess,

Danny

202 kB
Hochgeladen:12.07.2013
Ladeanzahl237
Herunterladen
 
12.07.2013  
 




Jörg
Sellmeyer
Mach am besten ein neues Thema dafür auf und gib ein minimales, lauffähiges Codebeispiel dabei an.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
12.07.2013  
 




holmol93
Heyho

Okay, dann mach ich das mal ;)

Danke für den Hinweis

Gruess us Bärn,

Danny
 
12.07.2013  
 




Julian
Schmidt
Thomas Freier (12.07.13)
Bin mir nicht sicher ob's nicht kürzer geht


Mit Funktionen auf jeden Fall.
Def @Date(1) dt("setDateTime",val(substr$(substr$(@$(1),1," "),-1,".")), val(substr$(substr$(@$(1),1," "),2,".")), val(substr$(substr$(@$(1),1," "),1,".")), val(substr$(substr$(@$(1),-1," "),1,":")), val(substr$(substr$(@$(1),-1," "),2,":")), val(substr$(substr$(@$(1),-1," "),3,":")), val(substr$(substr$(@$(1),-1," "),-1,":")))
Def @DateDiff(2) dt("DateTimeStr", "dd.mm.yyyy'|'hh:nn:ss:zzz", Date(@$(1))-Date(@$(2)))
Def @YearsBetween(2) val(abs(1899-val(substr$(substr$(DateDiff(@$(1),@$(2)),1,"|"),3,"."))))
Def @MonthsBetween(2) val(abs(12-val(substr$(substr$(DateDiff(@$(1),@$(2)),1,"|"),2,"."))))
Def @DaysBetween(2) val(abs(30-val(substr$(substr$(DateDiff(@$(1),@$(2)),1,"|"),1,"."))))
Def @HoursBetween(2) val(substr$(substr$(DateDiff(@$(1),@$(2)),-1,"|"),1,":"))
Def @MinutesBetween(2) val(substr$(substr$(DateDiff(@$(1),@$(2)),-1,"|"),2,":"))
Def @SecondsBetween(2) val(substr$(substr$(DateDiff(@$(1),@$(2)),-1,"|"),3,":"))
Def @MilliSecondsBetween(2) val(substr$(substr$(DateDiff(@$(1),@$(2)),-1,"|"),-1,":"))
CLS
Var Zeit1$="30.04.2013 19:15:10:01"
Var Zeit2$="02.05.2013 19:00:00:00"
print Zeit1$
print Zeit2$
print
print YearsBetween(Zeit1$, Zeit2$);" Jahr(e)"
print MonthsBetween(Zeit1$, Zeit2$);" Monat(e)"
print DaysBetween(Zeit1$, Zeit2$);" Tag(e)"
print HoursBetween(Zeit1$, Zeit2$);" Stunde(n)"
print MinutesBetween(Zeit1$, Zeit2$);" Minute(n)"
print SecondsBetween(Zeit1$, Zeit2$);" Sekunde(n)"
print MilliSecondsBetween(Zeit1$, Zeit2$);" Millisekunde(n)"
waitinput
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
14.07.2013  
 




holmol93
@Julian

so wäre es kürzer, aber rein funktional wäre es das gleiche oder?
Nur dass man die Funktionen dann überall innerhalb der Software aufrufen kann
 
15.07.2013  
 




Julian
Schmidt
Ja genau. Ich hab Thomas seinen Quelltext eins zu eins in die Funktionen umgeschrieben.

Ich denke der Quelltext liese sich mit @dt("Get..." weiter verkürzen.
Vlt sogar soweit das man sich die meisten Konstanten-Funktionen sparen kann.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
15.07.2013  
 




Julian
Schmidt
Naja soweit bekomme ich es gekürzt. Dann ist aber auch schon Schluss.
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 @YearsBetween(2) 1899-dt("getYear", Date(@$(1))-Date(@$(2)))
Def @MonthsBetween(2) 12-dt("getMonth", Date(@$(1))-Date(@$(2)))
Def @DaysBetween(2) 30-dt("getDay", Date(@$(1))-Date(@$(2)))
Def @HoursBetween(2) dt("getHour", Date(@$(1))-Date(@$(2)))
Def @MinutesBetween(2) dt("getMin", Date(@$(1))-Date(@$(2)))
Def @SecondsBetween(2) dt("getSec", Date(@$(1))-Date(@$(2)))
CLS
Var Zeit1$="30.04.2013 19:15:10"
Var Zeit2$="02.05.2013 19:00:00"
print Zeit1$
print Zeit2$
print
print YearsBetween(Zeit1$, Zeit2$);" Jahr(e)"
print MonthsBetween(Zeit1$, Zeit2$);" Monat(e)"
print DaysBetween(Zeit1$, Zeit2$);" Tag(e)"
print HoursBetween(Zeit1$, Zeit2$);" Stunde(n)"
print MinutesBetween(Zeit1$, Zeit2$);" Minute(n)"
print SecondsBetween(Zeit1$, Zeit2$);" Sekunde(n)"
waitinput

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), Date(@$(2))-Date(@$(3)))*If(@$(1)="Hour",-1,If(@$(1)="Min",-1,If(@$(1)="Sec",-1,1)))
CLS
Var Zeit1$="30.04.2013 19:15:10"
Var Zeit2$="02.05.2013 19:00:00"
print Zeit1$
print Zeit2$
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)"
waitinput
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
15.07.2013  
 




Julian
Schmidt
So kann man sowohl einen Datumsstring als auch ein Zeitpunkt verwenden
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 12:00:00")
Var Zeit2!=!Now
print dt("DateTimeStr", "dd.mm.yyyy hh:nn:ss", Zeit1!)
print dt("DateTimeStr", "dd.mm.yyyy hh:nn:ss", Zeit2!)
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)"
waitinput
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
15.07.2013  
 



 
- Seite 2 -



holmol93
Boah vielen Dank für Eure hilfreichen Antworten!

Die Funktion hat perfekt funktioniert und erfüllt das, was sie machen soll!

Meine Software rechnet immer die Abstände zwischen zwei IN und OUT Stempeln aus und addiert die Differenzen jeweils zur Tagesarbeitszeit.

Greetz und Merci für die zahlreichen Antworten

Danny
 
28.07.2013  
 




Julian
Schmidt
Joa, kein Problem.

Damit lassen sich übrigens auch ganz einfach Counter bauen.
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) Format$("00",Str$(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)))))
Declare Zeit2!, Zeit1!
UserMessages 513, 516
Windowstyle 1024+16+64
Cls 0
SetWindowPos %hwnd= 100,100 - 209,34;-1

WhileNot (getfocus(%hwnd) and iskey(27)) or (%umessage=516)

    Case %uMessage=513 : SendMessage(%hwnd,$112,$F012,0)
    Zeit1!=!Now
    Zeit2!=Date("07.05."+ Str$(Val(Substr$(Date$(0),-1,"."))+1)+" 00:00:00")
    TextColor 0,RGB(180,180,220)
    UseFont "Sans Serif",30,0,1,0,0
    DrawText 3, 2, \
    DTBetween("Year",Zeit1!, Zeit2!)+"."+\
    DTBetween("Month",Zeit1!, Zeit2!)+"."+\
    DTBetween("Day",Zeit1!, Zeit2!)+" "+\
    DTBetween("Hour",Zeit1!, Zeit2!)+":"+\
    DTBetween("Min",Zeit1!, Zeit2!)+":"+\
    DTBetween("Sec",Zeit1!, Zeit2!), 0
    Waitinput 1000

EndWhile

 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
28.07.2013  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

19.189 Betrachtungen

Unbenanntvor 0 min.
H.Brill09.10.2021
Uwe Lang22.08.2019
Walter12.04.2018
Langer04.04.2017
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie