Модуль:Dates: различия между версиями

199 байт добавлено ,  3 года назад
нормальная ошибка вместо ошибки Lua
(нормальная ошибка вместо ошибки Lua)
 
local function Yyyymmdd(r)--Переводит русскую дату в YYYY,MM,DD
local d, m, y, M = mw.ustring.match(r, "^%s*(%d%d?)%s+([а-яА-Я]+)%s+(%d+)")
if not m then return nil end
m = mw.ustring.lower(m)
 
for i=1,12 do if m==monthg[i] then M=i;break end end--тупо перебор
--тупо перебор
if not M then return nil end
for i = 1, 12 do
return tonumber(y),M,tonumber(d)
if m == monthg[i] then
M = i
break
end
end
 
if not M then return nil end
return nil
end
return tonumber(y), M, tonumber(d)
end
 
end;
 
DecodeDate = DecodeDate;Diffy=Diffy;Year0=Year0;GetDate=GetDate;Cmp=Cmp;
Diffy = Diffy;
Yyyymmdd=Yyyymmdd;
Year0 = Year0;
GetDate = GetDate;
Cmp = Cmp;
Yyyymmdd = Yyyymmdd;
 
diffy = function(f)-- принимает параметры #invoke в виде двух строк-дат
local d1,m1,y1=DecodeDate(f.args[1]);
local d0,m0,y0=DecodeDate(f.args[2])
yyyymmdd = function(f)
local date, hourmin = f.args[1]
if mw.ustring.match(date, "^%s*%d+\-%d+\-%d+") then return date end
return date
end
hourmin = mw.ustring.match(date, "%s+%d+:%d+$")
local y, m, d = Yyyymmdd(date)
if not y then
return '<span class="error">Ошибка: некорректный формат даты.</span>'
end
return string.format('%4i-%02i-%02i', y, m, d) .. (hourmin or '')
end
142

правки