
; Beispiele für die dynamische Länge des Ausgabestrings
MsgBox(0, 'Minuten, Sekunden', _SecondsToDateTime(87))
MsgBox(0, 'Stunden, Minuten, Sekunden', _SecondsToDateTime(3600))
MsgBox(0, 'Tage, Stunden, Minuten, Sekunden', _SecondsToDateTime(99678))
MsgBox(0, 'Wochen, Tage, Stunden, Minuten, Sekunden', _SecondsToDateTime(6178912))


; Beispiel für einen Countdown
#include <Date.au3>
$bStop = False
HotKeySet('{ESC}', '_Stop')
Do
	$iDiff = _DateDiff('s', '2010/01/01 00:00:00', _NowCalc())
	ToolTip(_SecondsToDateTime($iDiff), @DesktopWidth / 2 - 100, 2, '[ESC] = beenden', 1, 4)
	Sleep(500)
Until $bStop
Exit

Func _Stop()
	$bStop = True
EndFunc   ;==>_Stop

;===============================================================================
; Function Name..: _SecondsToDateTime($iSeconds[, $iLang])
; Description....: Umwandlung von Sekunden in einen String mit Zeitangaben
; Parameter(s)...: $iSeconds = Wert in Sekunden
;                  $iLang
;                     0 = Ausgabe in deutsch
;                     1 = Ausgabe in englisch
; Return Value...: String (Wochen, Tage, Stunden, Minuten, Sekunden)
; Author.........: Oscar (www.autoit.de)
;===============================================================================
Func _SecondsToDateTime($iSeconds, $iLang = 0)
	If $iLang < 0 Or $iLang > 1 Then $iLang = 0
	Local $sOut = '', $bCheck = False, $bNegative = False, $aDiv[5] = [604800, 86400, 3600, 60, 1]
	Local $aFormat[5][2] = [['Wochen', 'Weeks'],['Tage', 'Days'],['Stunden', 'Hours'],['Minuten', 'Minutes'],['Sekunden', 'Seconds']]
	If $iSeconds = 0 Then Return '0 ' & $aFormat[4][$iLang]
	If $iSeconds < 0 Then
		$bNegative = True
		$iSeconds = Abs($iSeconds)
	EndIf
	For $i = 0 To 4
		If ($iSeconds >= $aDiv[$i]) Or $bCheck Then
			$sOut &= Int($iSeconds / $aDiv[$i]) & ' '
			If Int($iSeconds / $aDiv[$i]) = 1 Then
				$sOut &= StringTrimRight($aFormat[$i][$iLang], 1) & ', '
			Else
				$sOut &= $aFormat[$i][$iLang] & ', '
			EndIf
			$bCheck = True
		EndIf
		$iSeconds = Mod($iSeconds, $aDiv[$i])
	Next
	If $bNegative Then $sOut = ' - ' & $sOut
	Return StringTrimRight($sOut, 2)
EndFunc   ;==>_SecondsToDateTime
