40 lines
798 B
Lua
40 lines
798 B
Lua
local MAX_MINUTES = 60 * 12
|
|
|
|
local Time = {}
|
|
Time.__index = Time
|
|
|
|
local function newTimeRaw(rawMinutes)
|
|
local t = {
|
|
rawminutes = rawMinutes % MAX_MINUTES
|
|
}
|
|
return setmetatable(t, Time)
|
|
end
|
|
|
|
function Time:new(hour, minute)
|
|
return newTimeRaw((hour or 12) % 12 * 60 + (minute or 0))
|
|
end
|
|
|
|
function Time:get()
|
|
local h = math.floor(self.rawminutes / 60 % 12)
|
|
if h == 0 then h = 12 end
|
|
local m = self.rawminutes % 60
|
|
return h, m
|
|
end
|
|
|
|
function Time:getHoursSinceTwelve()
|
|
local h = self.rawminutes / 60
|
|
if h < 1 then h = h + 12 end
|
|
return h
|
|
end
|
|
|
|
function Time:addMinutes(minutes)
|
|
return newTimeRaw(self.rawminutes + minutes)
|
|
end
|
|
|
|
function Time:__tostring()
|
|
local h, m = self:get()
|
|
return string.format("%d:%02d", h, m)
|
|
end
|
|
|
|
return Time
|