- Offizieller Beitrag
Eine kleine Funktion zum umwandeln von Sekunden in einen String mit Zeitangaben:
Spoiler anzeigen
; 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 (http://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