my function do what I want. But is there any shorter way? challenge
Script / Function
Code: Select all
; GLOBAL SETTINGS ===================================================================
#NoEnv
#SingleInstance Force
SetBatchLines -1
; ===================================================================================
TimeArr := [59, 60, 61, 3599, 3600, 3601, 86399, 86400, 86401]
for i, v in TimeArr
GetTime .= CalcTime(TimeArr[i]) "`n"
; GUI ===============================================================================
Gui, Margin, 5, 5
Gui, Font,, Courier New
Gui, Add, Edit, xm ym w200 h200 0x802, % GetTime
Gui, Show, AutoSize
return
; FUNCTIONS =========================================================================
CalcTime(sec)
{
s := sec
if (sec >= 86400)
{
d := floor(s / 86400)
s := mod(s, 86400)
o .= d "d "
}
if (sec >= 3600)
{
h := floor(s / 3600)
s := mod(s, 3600)
o .= (h < 9 ? " " h : h) "h "
}
if (sec >= 60)
{
m := floor(s / 60)
s := mod(s, 60)
o .= (m < 9 ? " " m : m) "m "
}
if (sec >= 1)
{
o .= (s < 9 ? " " s : s) "s"
}
return o
}
/*
CalcTimeShort(sec)
{
s := sec
if (sec >= 86400)
d := floor(s / 86400), s := mod(s, 86400), o .= d "d "
if (sec >= 3600)
h := floor(s / 3600), s := mod(s, 3600), o .= (h < 9 ? " " h : h) "h "
if (sec >= 60)
m := floor(s / 60), s := mod(s, 60), o .= (m < 9 ? " " m : m) "m "
if (sec >= 1)
o .= (s < 9 ? " " s : s) "s"
return o
}
*/
; EXIT ==============================================================================
GuiClose:
GuiEscape:
ExitApp
; ===================================================================================
Code: Select all
59s ; 59
1m 0s ; 60
1m 1s ; 61
59m 59s ; 3599
1h 0m 0s ; 3600
1h 0m 1s ; 3601
23h 59m 59s ; 86399
1d 0h 0m 0s ; 86400
1d 0h 0m 1s ; 86401