Module:IxTime: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
Line 6: | Line 6: | ||
function p.convertToIxTime(inputTime) | function p.convertToIxTime(inputTime) | ||
if type(inputTime) == "table" then | if type(inputTime) == "table" then | ||
-- Ensure all necessary fields are present | |||
inputTime.year = inputTime.year or os.date("*t").year | |||
inputTime.month = inputTime.month or 1 | |||
inputTime.day = inputTime.day or 1 | |||
inputTime.hour = inputTime.hour or 0 | |||
inputTime.min = inputTime.min or 0 | |||
inputTime.sec = inputTime.sec or 0 | |||
inputTime = os.time(inputTime) | inputTime = os.time(inputTime) | ||
end | end | ||
Line 23: | Line 30: | ||
local month = tonumber(args[2] or args.month) | local month = tonumber(args[2] or args.month) | ||
local day = tonumber(args[3] or args.day) | local day = tonumber(args[3] or args.day) | ||
local hour = tonumber(args[4] or args.hour or | local hour = tonumber(args[4] or args.hour or 0) | ||
local minute = tonumber(args[5] or args.minute or | local minute = tonumber(args[5] or args.minute or 0) | ||
local second = tonumber(args[6] or args.second or | local second = tonumber(args[6] or args.second or 0) | ||
if not year or not month or not day then | if not year or not month or not day then | ||
return "Error: Invalid date format" | return "Error: Invalid date format. Please provide at least year, month, and day." | ||
end | end | ||
local inputTime = {year=year, month=month, day=day, hour=hour, | local inputTime = {year=year, month=month, day=day, hour=hour, min=minute, sec=second} | ||
local ixTime = p.convertToIxTime(inputTime) | local ixTime = p.convertToIxTime(inputTime) | ||
return p.formatIxTime(ixTime) .. " IX" | return p.formatIxTime(ixTime) .. " IX" |
Revision as of 20:22, 3 August 2024
Documentation for this module may be created at Module:IxTime/doc
local p = {}
-- Ensure this matches the JavaScript epoch
local EPOCH = os.time({year=2020, month=10, day=4, hour=0, minute=0, second=0})
function p.convertToIxTime(inputTime)
if type(inputTime) == "table" then
-- Ensure all necessary fields are present
inputTime.year = inputTime.year or os.date("*t").year
inputTime.month = inputTime.month or 1
inputTime.day = inputTime.day or 1
inputTime.hour = inputTime.hour or 0
inputTime.min = inputTime.min or 0
inputTime.sec = inputTime.sec or 0
inputTime = os.time(inputTime)
end
local secondsSinceEpoch = inputTime - EPOCH
local ixSeconds = secondsSinceEpoch * 4.0
return EPOCH + ixSeconds
end
function p.formatIxTime(ixTime)
-- Format the time to match the JavaScript output
return os.date("!%A, %B %d, %Y %I:%M:%S %p", ixTime)
end
function p.convertDateToIxTime(frame)
local args = frame.args
local year = tonumber(args[1] or args.year)
local month = tonumber(args[2] or args.month)
local day = tonumber(args[3] or args.day)
local hour = tonumber(args[4] or args.hour or 0)
local minute = tonumber(args[5] or args.minute or 0)
local second = tonumber(args[6] or args.second or 0)
if not year or not month or not day then
return "Error: Invalid date format. Please provide at least year, month, and day."
end
local inputTime = {year=year, month=month, day=day, hour=hour, min=minute, sec=second}
local ixTime = p.convertToIxTime(inputTime)
return p.formatIxTime(ixTime) .. " IX"
end
function p.getCurrentIxTime(frame)
local currentTime = os.time()
local ixTime = p.convertToIxTime(currentTime)
return p.formatIxTime(ixTime) .. " IX"
end
return p