I’m making a time function that converts float numbers into time format, and if the minutes value is less than 10, it should be 05 (6:05:00 and not 6:5:0). And I made 18 lines of if statements just so it can work, is there a more efficient way to do this? Everything here works, I just want to know if it can be more concise
function MS.time(x,y) -- parameter 1 is for the time 0-24, parameter 2 is if the 12 or 24 hour system is used, if set to false, the script will use the 24 hours system.
if y == nil or y == false then
local hours = math.floor(x)
local m = (x-hours)*60
local minutes = math.floor(m+.5)
local seconds = math.floor((m-minutes)*60+.5)
if hours >= 0 and hours <= 24 then
if hours < 10 and seconds < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. "0".. seconds
elseif hours < 10 and seconds < 10 then
return "0".. hours.. ":".. minutes.. ":".. "0".. seconds
elseif hours < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. seconds
elseif seconds < 10 and minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. "0".. seconds
elseif seconds < 10 then
return hours.. ":".. minutes.. ":".. "0".. seconds
elseif minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. seconds
elseif hours < 10 then
return "0".. hours.. ":".. minutes.. ":".. seconds
end
end
elseif y == true then
local hours = math.floor(x)
if hours > 12 and hours < 24 then
hours = hours - 12
local m = ((x-12)-hours)*60
local minutes = math.floor(m+.5)
local seconds = math.floor((m-minutes)*60+.5)
if hours < 10 and seconds < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " PM"
elseif hours < 10 and seconds < 10 then
return "0".. hours.. ":".. minutes.. ":".. "0".. seconds.. " PM"
elseif hours < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. seconds.. " PM"
elseif seconds < 10 and minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " PM"
elseif seconds < 10 then
return hours.. ":".. minutes.. ":".. "0".. seconds.. " PM"
elseif minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. seconds.. " PM"
elseif hours < 10 then
return "0".. hours.. ":".. minutes.. ":".. seconds.. " PM"
end
elseif hours == 12 and hours < 24 then
local m = (x-hours)*60
local minutes = math.floor(m+.5)
local seconds = math.floor((m-minutes)*60+.5)
if hours < 10 and seconds < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " PM"
elseif hours < 10 and seconds < 10 then
return "0".. hours.. ":".. minutes.. ":".. "0".. seconds.. " PM"
elseif hours < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. seconds.. " PM"
elseif seconds < 10 and minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " PM"
elseif seconds < 10 then
return hours.. ":".. minutes.. ":".. "0".. seconds.. " PM"
elseif minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. seconds.. " PM"
elseif hours < 10 then
return "0".. hours.. ":".. minutes.. ":".. seconds.. " PM"
end
elseif hours == 24 then
local m = ((x-12)-hours)*60
local minutes = math.floor(m+.5)
local seconds = math.floor((m-minutes)*60+.5)
if hours < 10 and seconds < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " AM"
elseif hours < 10 and seconds < 10 then
return "0".. hours.. ":".. minutes.. ":".. "0".. seconds.. " AM"
elseif hours < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. seconds.. " AM"
elseif seconds < 10 and minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " AM"
elseif seconds < 10 then
return hours.. ":".. minutes.. ":".. "0".. seconds.. " AM"
elseif minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. seconds.. " AM"
elseif hours < 10 then
return "0".. hours.. ":".. minutes.. ":".. seconds.. " AM"
end
elseif hours < 24 and hours > 0 then
local m = (x-hours)*60
local minutes = math.floor(m+.5)
local seconds = math.floor((m-minutes)*60+.5)
if hours < 10 and seconds < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " AM"
elseif hours < 10 and seconds < 10 then
return "0".. hours.. ":".. minutes.. ":".. "0".. seconds.. " AM"
elseif hours < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. seconds.. " AM"
elseif seconds < 10 and minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " AM"
elseif seconds < 10 then
return hours.. ":".. minutes.. ":".. "0".. seconds.. " AM"
elseif minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. seconds.. " AM"
elseif hours < 10 then
return "0".. hours.. ":".. minutes.. ":".. seconds.. " AM"
end
elseif hours == 0 then
hours = 12
local m = ((x)-hours)*60
local minutes = math.floor(m+.5)
local seconds = math.floor((m-minutes)*60+.5)
if hours < 10 and seconds < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " AM"
elseif hours < 10 and seconds < 10 then
return "0".. hours.. ":".. minutes.. ":".. "0".. seconds.. " AM"
elseif hours < 10 and minutes < 10 then
return "0".. hours.. ":".. "0".. minutes.. ":".. seconds.. " AM"
elseif seconds < 10 and minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. "0".. seconds.. " AM"
elseif seconds < 10 then
return hours.. ":".. minutes.. ":".. "0".. seconds.. " AM"
elseif minutes < 10 then
return hours.. ":".. "0".. minutes.. ":".. seconds.. " AM"
elseif hours < 10 then
return "0".. hours.. ":".. minutes.. ":".. seconds.. " AM"
end
end
end
end