 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Phil
Anmeldedatum: 08.07.2006 Beiträge: 18 Wohnort: Wülfrath
|
Verfasst am: Fr Sep 08, 2006 6:22 pm Titel: Zeitrechner |
|
|
Hallo zusammen, ich hänge gerade bei folgendem fest:
Ich versuche eine Funktion zu schreiben, die eine variable arbeitszeit mit einer variablen startzeit addiert und die daraus folgende uhrzeit zurückgibt.
Übergänge von einem Tag zum anderen müssen nicht berücksichtigt werden.
Was ich nun logisch garnicht auf die Reihe bekomme, ist der Sprung zu einer neuen Stunde, und der ganze Kram.
Unten stehender Code ist wahrscheinlich zu 99% Blödsinn, weiss schon garnicht mehr zum wievielten Mal ich das neu anfange
| Code: |
startzeit = 14:15
arbeitszeit = 136 ; In Minuten
MsgBox, % "Startzeit: " startzeit " Uhr`n" "Arbeitszeit: " arbeitszeit " Minuten`n`nFeierabend: " addTime(startzeit, arbeitszeit) ; %
ExitApp
addTime(startzeit, arbeitszeit)
{
StringSplit, digit_, startzeit, :
hrs := digit_1
mins := digit_2
Loop
{
If überschuss = 0
{
break
}
newmins := mins + arbeitszeit
If newmins > 60
{
überschuss := newmins - 60
}
MsgBox, %mins% + %arbeitszeit% = %newmins% davon sind mehr als 60: %überschuss%
}
return endzeit
}
|
PS: Über EnvAdd und EnvSub hab ich was gelesen, weiss aber nicht wie ich das in diesem fall einsetzen soll, und am liebsten wärs mir ohne, glaub ich ^^
Danke für eure Hilfe, Phil _________________ Win XP Prof Sp2 |
|
| Nach oben |
|
 |
Boskoop als Gast Gast
|
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 701 Wohnort: Powerland
|
Verfasst am: So Sep 10, 2006 8:56 pm Titel: Re: Zeitrechner |
|
|
| Code: | startzeit = 14:15
arbeitszeit = 136 ; In Minuten
MsgBox, % "Startzeit: " startzeit " Uhr`n" "Arbeitszeit: " arbeitszeit " Minuten`n`nFeierabend: " addTime(startzeit, arbeitszeit) ; %
ExitApp
addTime(startzeit, arbeitszeit)
{
StringSplit, digit_, startzeit, :
; Startzeit in Minuten wandeln, so kann man einfacher rechnen
StartzeitInMinuten := digit_1*60 + digit_2
EndzeitInMinuten := StartzeitInMinuten + Arbeitszeit
; Ergebnis zurück ins hh:mm-Format wandeln
SetFormat, Float, 02.0 ; mit Vornullen
EndzeitStd := Floor(EndzeitInMinuten / 60)
EndzeitStd := Mod(EndzeitStd, 24) + 0.0 ; hier Tagesüberlauf korrigieren
EndZeitMin := Mod(EndzeitInMinuten, 60) + 0.0
Endzeit = %EndzeitStd%:%EndzeitMin%
Return Endzeit
} |
|
|
| Nach oben |
|
 |
Phil
Anmeldedatum: 08.07.2006 Beiträge: 18 Wohnort: Wülfrath
|
Verfasst am: So Sep 10, 2006 9:40 pm Titel: |
|
|
danke euch beiden, chucky ich liebe dich, meister!
Jetzt mal rausfinden wie du das gemacht hast  _________________ Win XP Prof Sp2 |
|
| Nach oben |
|
 |
Phil&Chucky'sTrauzeug Gast
|
Verfasst am: So Sep 10, 2006 9:53 pm Titel: |
|
|
 |
|
| Nach oben |
|
 |
Phil
Anmeldedatum: 08.07.2006 Beiträge: 18 Wohnort: Wülfrath
|
Verfasst am: So Sep 10, 2006 10:15 pm Titel: |
|
|
hrhr  _________________ Win XP Prof Sp2 |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 701 Wohnort: Powerland
|
Verfasst am: Di Sep 12, 2006 7:18 pm Titel: |
|
|
| Phil hat Folgendes geschrieben: | | danke euch beiden, chucky ich liebe dich, meister! |
Ogottogottogottogottogottogottogottogottogottogottogottogottogottogottogott! .
Gegenüber vielen anderen in diesem Forum bin ich wohl eher ein Azubi .
Ich habe noch eine wesentlich kürzere Version der Berechnung, die mit dem von Dir erwähnten EnvAdd arbeitet. | Code: | startzeit = 14:15
arbeitszeit = 136 ; In Minuten
MsgBox, % "Startzeit: " startzeit " Uhr`n" "Arbeitszeit: " arbeitszeit " Minuten`n`nFeierabend: " addTime(startzeit, arbeitszeit) ; %
ExitApp
addTime(startzeit, arbeitszeit)
{
StringSplit, digit_, startzeit, `:
Zeit = 20000101%digit_1%%digit_2%00 ; ins YYYYMMDDHH24MISS-Format umwandeln
EnvAdd, Zeit, %arbeitszeit%, minutes ; "Zeit += arbeitszeit, minutes" geht auch!
FormatTime, EndZeit, %Zeit% T8, hh:mm
Return Endzeit
} | Damit sich die Zeit auf diese Weise berechnen läßt, muß sie ins YYYYMMDDHH24MISS-Format gewandelt werden. Dazu mußt Du nur irgendein gültiges Datum an den Anfang des Startzeit-Strings setzen und Sekunden als Endung.
Und gaaaanz ruhig bleiben ...  |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|