Модуль:LongISODateToText
Этому модулю не хватает документации. |
--[[
Переводит даты 10000-01-01 -> в 1 января 10000 года
Используется в шаблонах Ожидаемых событий по датам (ОСДН и ОСДК)
]]
local LongISODateToText={}
local monthNominative = {'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"}
local monthGenitive = {'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', "сентября", "октября", "ноября", "декабря"}
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