Minutenzähler

  • Ich wollte mal fragen, ob es eine UDF gibt, die einen Timerinit/timerdiff nachmacht, aber die Zeitspanne halt in HH:MM:SS zurückgibt.

    ich wollte die folgendermaßen benutzen:

    [autoit]


    ;gui erstellen
    while 1
    switch $nmsg = guigetmsg
    case ;.......
    endswitch
    ;UDF als timer
    ;guictrlsetdata(label1,"Du spielst schon: " & ;Zeitstring")
    sleep(1)
    wend

    [/autoit]

    MFG Sebastian

  • ich fürchte nein, aber Du kannst mein kleines Script verwenden.

    Spoiler anzeigen
    [autoit]

    $begin = TimerInit()
    sleep(3000)
    $dif = TimerDiff($begin)
    MsgBox(0,"Time Difference",_MinToTime(Floor($dif/60000)))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #INDEX# =======================================================================================================================
    ; Title .........: TimeMin
    ; AutoIt Version: 3.2.3++
    ; Language: English
    ; Description: Functions that assist with Time calculation.
    ; ===============================================================================================================================
    ; ------------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.0
    ; Language: English
    ; Description: Functions that assist with Time management.
    ;
    ; ------------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _TimetoMin()
    ; Description ...: Change the format from Time to Minutes like: 08:45 --> +525
    ; Syntax.........: _TimetoMin($msg)
    ; Parameters ....: $msg - Time to convert, format: "(+/-)05:04"
    ; Return values .: Success - Time in minutes with "+/-digits"
    ; Failure: @error - 1 = Function called with wrong Parameter (not in format (+/-)hh:mm)
    ; Author ........: Oliver Zimmermann <o_z at gmx dot net>
    ; Modified.......:
    ; Remarks .......: If called with prefix then the function returns incl. prefix (+/-), otherwise without prefix
    ; Related .......: _MintoTime()
    ; Link ..........;
    ; Example .......; No
    ; ===============================================================================================================================
    Func _TimetoMin($msg)
    Local $vz, $Mins1, $Mins2, $sumtoMin
    If StringLeft($msg,1)="+" Then
    $msg=StringTrimLeft($msg,1)
    ElseIf StringLeft($msg,1)="-" Then
    $vz="-"
    $msg=StringTrimLeft($msg,1)
    EndIf
    $msg=StringSplit($msg,":")
    If @error=1 Then
    setError(1)
    Return 0
    EndIf
    If StringIsDigit($msg[1])=0 Or StringIsDigit($msg[2])=0 Or $msg[2]>59 Then
    setError(1)
    Return 0
    EndIf
    $msg[1]=$msg[1]*60
    $sumtoMin=$msg[1]+$msg[2]
    If $vz="" Then $vz="+"
    $msg=0
    setError(0)
    Return($vz&$sumtoMin)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _MintoTime()
    ; Description ...: Change the format from minutes to Time format like: 08:45 --> +525
    ; Syntax.........: _MintoTime($msg)
    ; Parameters ....: $msg - Minutes to convert, format: "+/-digits"
    ; Return values .: Success - Time in format "+/-hh:mm"
    ; Failure: @error - 1 = Function called with wrong Parameter (not in format (+/-)digits)
    ; Author ........: Oliver Zimmermann <o_z at gmx dot net>
    ; Modified.......:
    ; Remarks .......: If called with prefix then the function returns incl. prefix (+/-), otherwise without prefix
    ; Related .......: _TimetoMin()
    ; Link ..........;
    ; Example .......; No
    ; ===============================================================================================================================
    Func _MintoTime($msg)
    Local $Hours, $Mins, $vz
    If StringLeft($msg,1)="+" Then
    $msg=StringTrimLeft($msg,1)
    $vz=""
    ElseIf StringLeft($msg,1)="-" Then
    $vz="-"
    $msg=StringTrimLeft($msg,1)
    EndIf
    If StringIsDigit($msg)=0 Then
    SetError(1)
    Return(0)
    EndIf
    $Hours=StringSplit($msg/60,".")
    $Mins=$msg-($Hours[1]*60)
    If $Mins<10 Then $Mins="0"&$Mins
    If $Hours[1]<10 Then $Hours[1]="0"&$Hours[1]
    $msg=0
    setError(0)
    Return ($vz&$Hours[1]&":"&$Mins)
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • Hey Namensvetter

    oder nimm meins was ich einfacher finde, aber entscheide selbst

    Func:

    Spoiler anzeigen
    [autoit]

    #include <string.au3>
    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _VergangeneZeit
    ; Description ...: Gibt die vergangene Zeit im Format HH:MM:SS an
    ; Parameters ....: $Timer - Handle von TimerInit
    ; Return values .: Success - Vergangene Zeit im Format HH:MM:SS
    ; Author ........: Keyle
    ; Requirement....: string.au3
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _VergangeneZeit($Timer)
    $Diff = TimerDiff($Timer)
    $Sekunden = Round($Diff / 1000,0)
    $Minuten = Round($Sekunden / 60,0)
    $Stunden = Round($Minuten / 60,0)
    $Minuten = $Minuten - ($Stunden*60)
    $Sekunden = $Sekunden - ($Minuten*60)
    $Sekunden = _StringRepeat("0",2-StringLen($Sekunden)) & $Sekunden
    $Minuten = _StringRepeat("0",2-StringLen($Minuten)) & $Minuten
    $Stunden = _StringRepeat("0",2-StringLen($Stunden)) & $Stunden
    Return $Stunden & ":" &$Minuten & ":" &$Sekunden
    EndFunc

    [/autoit]

    Bsp.:

    Spoiler anzeigen
    [autoit]

    #include <VergangeneZeit.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $AnfangsTimer = TimerInit()
    Sleep(12000)
    $VergangeneZeit = _VergangeneZeit($AnfangsTimer)
    MsgBox(0,"Vergangene Zeit:",$VergangeneZeit)

    [/autoit]

    Mfg Keyle

  • Die funktion finde ich einfacher :=)

    solltest vielleicht noch hinschreiben:
    ;Voraussetzung: strings.au3

    MFG Sebastian

    • Offizieller Beitrag

    Eigentlich gibt es dafür ja bereits eine Funktion in den UDFs: _TicksToTime()

    Wenn man sich die Funktion aber mal anschaut:

    [autoit]


    Func _TicksToTime($iTicks, ByRef $iHours, ByRef $iMins, ByRef $iSecs)
    If Number($iTicks) > 0 Then
    $iTicks = Round($iTicks / 1000)
    $iHours = Int($iTicks / 3600)
    $iTicks = Mod($iTicks, 3600)
    $iMins = Int($iTicks / 60)
    $iSecs = Round(Mod($iTicks, 60))
    ; If $iHours = 0 then $iHours = 24
    Return 1
    ElseIf Number($iTicks) = 0 Then
    $iHours = 0
    $iTicks = 0
    $iMins = 0
    $iSecs = 0
    Return 1
    Else
    SetError(1)
    Return 0
    EndIf
    EndFunc ;==>_TicksToTime

    [/autoit]


    muss ich sagen, dass ist irgendwie ziemlich umständlich.
    Ich finde das so wesentlich besser:

    [autoit]


    Func _TicksToTime($iTicks)
    Local $iHours, $iMins, $iSecs = Int($iTicks / 1000)
    $iHours = Int($iSecs / 3600)
    $iSecs = Mod($iSecs, 3600)
    $iMins = Int($iSecs / 60)
    $iSecs = Mod($iSecs, 60)
    Return StringFormat('%02i:%02i:%02i', $iHours, $iMins, $iSecs)
    EndFunc ;==>_TicksToTime

    [/autoit]