Moin,
diese Funktion addiert Zeiten in beliebiger Menge.
Ich möchte aber gern eine beliebige Menge Zeiten subtrahieren.
Könnt ihr mir helfen?
AutoIt
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Local $aInput[3] = ["01:30:00", "01:00:00", "01:00:00" ]
;~ _ArrayDisplay($aInput)
Local $Summe = _Timeradd($aInput)
Msgbox(1,"",$Summe)
Func _Timeradd($aInput)
Local $aTemp
Local $aTime[4]
Local $sData, $iSec, $iMinCarry, $iMin, $iHrsCarry, $iHrs, $iDayCarry, $aTemp, $Sum
For $i = 0 To UBound($aInput) - 1
$sData = $aInput[$i]
If $sData <> "" Then
;~ MsgBox(1, "", $sData)
;$aTemp = StringRegExp($sData, "(?:(\d*)\h)?(\d*):(\d*):(\d*)", 3); <- Alternative to StringSplit & _ArrayInsert below.
$aTemp = StringSplit($sData, " :", 2) ; $STR_CHRSPLIT (0) + $STR_NOCOUNT (2)
If UBound($aTemp) = 3 Then _ArrayInsert($aTemp, 0, 0)
;~ _ArrayDisplay($aTemp)
For $j = 0 To 3
$aTime[$j] += Int($aTemp[$j]) ; Add all days, all hours, all mins, and, all secs.
Next
EndIf
Next
;~ _ArrayDisplay($aTime)
$iSec = Mod($aTime[3], 60)
$iMinCarry = Int($aTime[3] / 60)
$iMin = Mod($aTime[2] + $iMinCarry, 60)
$iHrsCarry = Int(($aTime[2] + $iMinCarry) / 60)
$iHrs = Mod(($aTime[1] + $iHrsCarry), 24)
;~ MsgBox(0, "Sum = ", StringFormat("%02i:%02i:%02i", $iHrs, $iMin, $iSec))
$Sum = StringFormat("%02i:%02i:%02i", $iHrs, $iMin, $iSec)
Return $Sum
EndFunc ;==>_Timeradd
Alles anzeigen
Gruß