Modulo:LongISODateToText
Dokumentado por ĉi tiu modulo povas esti kreata ĉe Modulo:LongISODateToText/dokumentado
--[[
Ĉi-modulo transformas daton de 10000-01-01 (jjjj-mm-tt) -> al 1-a de januaro 10000
Используется в шаблонах Ожидаемых событий по датам (ОСДН и ОСДК)
]]
local LongISODateToText={}
local monthNominative = {'Januaro', 'Februaro', 'Marto', 'Aprilo', 'Majo', 'Junio', 'Julio', 'Aŭgusto', "Septembro", "Oktobro", "Novembro", "Decembro"}
local monthGenitive = {'de januaro', 'de februaro', 'de marto', 'de aprilo', 'de majo', 'de junio', 'de julio', 'de aŭgusto', "de septembro", "de oktobro", "de novembro", "de decembro"}
function LongISODateToText.keyYInvoke(arg)
return LongISODateToText.keyY(arg.args[1])
end
function LongISODateToText.keyY(dateIn)
local y,m,d = LongISODateToText.parse(dateIn)
y = y+100000
return y
end
function LongISODateToText.keyISOInvoke(arg)
return LongISODateToText.keyISO(arg.args[1])
end
function LongISODateToText.keyISO(dateIn)
local y,m,d = LongISODateToText.parse(dateIn)
y = y+100000
m = m+10
d = d+10
return y..m..d
end
function LongISODateToText.parse(dateIn)
local y,m,d = dateIn:match('^%s*(%-?%d+)[-\\]0*(1?%d)[-\\]0*(%d+)')
return tonumber(y), tonumber(m), tonumber(d)
end
function LongISODateToText.plusDMY(arg)
return LongISODateToText.plusDMY(arg.args[1], arg.args[2])
end
function LongISODateToText.plusDMY(dateIn1, dateIn2)
local y1,m1,d1 = LongISODateToText.parse(dateIn1)
local y2,m2,d3 = LongISODateToText.parse(dateIn2)
local d3 = d1 + d2
local m3 = m1 + m2
local y3 = 0
while (m3 > 12) do
m3 = m3 - 12
y3 = y3 + 1
end
y3 = y1 + y2 + y3
return d3.." "..monthGenitive[m3].." "..y3
end
function LongISODateToText.parseDMInvoke(arg)
return LongISODateToText.parseDM(arg.args[1])
end
function LongISODateToText.parseDM(dateIn)
local y,m,d = LongISODateToText.parse(dateIn)
return d.." "..monthGenitive[m]
end
function LongISODateToText.parseDMYInvoke(arg)
return LongISODateToText.parseDMY(arg.args[1])
end
function LongISODateToText.parseDMY(dateIn)
local y,m,d = LongISODateToText.parse(dateIn)
return d.." "..monthGenitive[m].." "..y
end
function LongISODateToText.parseMYInvoke(arg)
return LongISODateToText.parseMY(arg.args[1])
end
function LongISODateToText.parseMY(dateIn)
local y,m,d = LongISODateToText.parse(dateIn)
return monthNominative[m].." "..y
end
function LongISODateToText.parseYInvoke(arg)
return LongISODateToText.parseY(arg.args[1])
end
function LongISODateToText.parseY(dateIn)
local y,m,d = LongISODateToText.parse(dateIn)
return y
end
return LongISODateToText