Forum | | | | - 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 |
| | | | |
| | | | | - 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
|
| | | | |
| | Julian Schmidt | Geht wohl in die Richtung. [...]
Thomas sein Beispiel berechnet aber noch Tage, Montate und Jahre |
| | | | |
| | 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 |
| | | | |
| | 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 |
| | | | |
| | 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
|
| | | | |
| | 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 |
| | | | |
| | 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. |
| | | | |
| | 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
|
| | | | |
| | 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
|
| | | | |
| | | | - 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 |
| | | | |
| | 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
|
| | | | |
|
AntwortenThemenoptionen | 19.189 Betrachtungen |
ThemeninformationenDieses Thema hat 4 Teilnehmer: |