Documentation for this module may be created at Module:Duration/doc
local p = {}
local lang = mw.getContentLanguage()
function p.timeConvert(timeR,raw)
local timeunit
if string.len(timeR) > 7 and string.sub(timeR,-7) == 'minutes' then
timeR = string.gsub(timeR,'minutes','')
timeunit = tonumber(timeR)*60
elseif string.len(timeR) > 7 and string.sub(timeR,-7) == 'seconds' then
timeR = string.gsub(timeR,'seconds','')
timeunit = tonumber(timeR)
elseif string.len(timeR) > 6 and string.sub(timeR,-6) == 'minute' then
timeR = string.gsub(timeR,'minute','')
timeunit = tonumber(timeR)*60
elseif string.len(timeR) > 5 and string.sub(timeR,-5) == 'hours' then
timeR = string.gsub(timeR,'hours','')
timeunit = tonumber(timeR)*3600
elseif string.len(timeR) > 4 and string.sub(timeR,-4) == 'hour' then
timeR = string.gsub(timeR,'hour','')
timeunit = tonumber(timeR)*3600
elseif string.len(timeR) > 3 and string.sub(timeR,-3) == 'min' then
timeR = string.gsub(timeR,'min','')
timeunit = tonumber(timeR)*60
elseif string.len(timeR) > 3 and string.sub(timeR,-3) == 'hrs' then
timeR = string.gsub(timeR,'hrs','')
timeunit = tonumber(timeR)*3600
elseif string.sub(timeR,-1) == 's' then
timeR = string.gsub(timeR,'s','')
timeunit = tonumber(timeR)
elseif string.sub(timeR,-1) == 'm' then
timeR = string.gsub(timeR,'m','')
timeunit = tonumber(timeR)*60
elseif string.sub(timeR,-1) == 'h' then
timeR = string.gsub(timeR,'h','')
timeunit = tonumber(timeR)*3600
else
timeunit = tonumber(timeR)*3600
end
if raw == 'raw' then
returnText = timeunit
elseif raw == 'h' then
returnText = timeunit/3600
else
returnText = p.duration(timeunit)
end
return returnText
end
function p.main(frame)
local timeunit = tonumber(frame.args[1]) or 0
return p.duration(timeunit)
end
function p.duration(timeunit,short)
local timetext
if short == 'yes' then
if timeunit == 0 then
timetext = 'Time not found[[Category:Time Error]]'
elseif timeunit>0 and timeunit<60 then
timetext = timeunit..'s'
elseif timeunit>=60 and timeunit<3600 then
if timeunit % 60 == 0 then
timetext = (timeunit/60)..'min'
else
timetext = math.floor(timeunit/60)..'min '..(timeunit-math.floor(timeunit/60)*60)..'s'
end
elseif 3600 <= timeunit then
if timeunit % 3600 == 0 then
timetext = (timeunit/3600)..'hr'
else
if timeunit-math.floor(timeunit/3600)*3600 < 60 then
timetext = math.floor(timeunit/3600)..'hr '..(timeunit-math.floor(timeunit/3600)*3600)..'s'
elseif timeunit % 60 == 0 then
timetext = math.floor(timeunit/3600)..'hr '..math.floor((timeunit-math.floor(timeunit/3600)*3600)/60)..'min'
else
timetext = math.floor(timeunit/3600)..'hr '..math.floor((timeunit-math.floor(timeunit/3600)*3600)/60)..'min '..(timeunit-(math.floor(timeunit/3600)*3600)-math.floor((timeunit-(math.floor(timeunit/3600)*3600))/60)*60) ..'s'
end
end
end
else
if timeunit == 0 then
timetext = 'Time not found[[Category:Time Error]]'
elseif timeunit>0 and timeunit<60 then
timetext = timeunit..' '..lang:convertPlural(timeunit,'second','seconds')
elseif timeunit>=60 and timeunit<3600 then
if timeunit % 60 == 0 then
timetext = (timeunit/60)..' '..lang:convertPlural((timeunit/60),'minute','minutes')
else
timetext = math.floor(timeunit/60)..' '..lang:convertPlural((timeunit/60),'minute','minutes')..' '..(timeunit-math.floor(timeunit/60)*60)..' '..lang:convertPlural((timeunit-math.floor(timeunit/60)*60),'second','seconds')
end
elseif 3600 <= timeunit then
if timeunit % 3600 == 0 then
timetext = (timeunit/3600)..' '..lang:convertPlural((timeunit/3600),'hour','hours')
else
if timeunit-math.floor(timeunit/3600)*3600 < 60 then
timetext = math.floor(timeunit/3600)..' '..lang:convertPlural(math.floor(timeunit/3600),'hour','hours')..' '..(timeunit-math.floor(timeunit/3600)*3600)..' '..lang:convertPlural((timeunit-math.floor(timeunit/3600)*3600),'second','seconds')
elseif timeunit % 60 == 0 then
timetext = math.floor(timeunit/3600)..' '..lang:convertPlural(math.floor(timeunit/3600),'hour','hours')..' '..math.floor((timeunit-math.floor(timeunit/3600)*3600)/60)..' '..lang:convertPlural(math.floor((timeunit-math.floor(timeunit/3600)*3600)/60),'minute','minutes')
else
timetext = math.floor(timeunit/3600)..' '..lang:convertPlural(math.floor(timeunit/3600),'hour','hours')..' '..math.floor((timeunit-math.floor(timeunit/3600)*3600)/60)..' '..lang:convertPlural(math.floor((timeunit-math.floor(timeunit/3600)*3600)/60),'minute','minutes')..' '..(timeunit-(math.floor(timeunit/3600)*3600)-math.floor((timeunit-(math.floor(timeunit/3600)*3600))/60)*60) ..' '..lang:convertPlural(60*(((timeunit-math.floor(timeunit/3600)*3600)/60)-math.floor(((timeunit-math.floor(timeunit/3600)*3600)/60))),'second','seconds')
end
end
end
end
return timetext
end
return p