Mòdul:Data
Aparença
Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]
A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]
Formatació de dates.
Sintaxi: {{#invoke:data|data_format|<data>|<format>}}
El primer paràmetre és la data a formatar. El segon paràmetre és el format a aplicar segons la funció #time. Per defecte aplica el format "j F Y" (d mes any).
Tracta diferents formats d'entrada. Vegeu {{data consulta}} per a una mostra.
local p = {}
local function mesNumero(mes_nom)
local mes_num = {
['gen'] = 1, ['jan'] = 1,
['feb'] = 2,
['mar'] = 3,
['abr'] = 4, ['apr'] = 4,
['mai'] = 5, ['may'] = 5,
['jun'] = 6,
['jul'] = 7,
['ago'] = 8, ['ag'] = 8, ['aug'] = 8,
['set'] = 9, ['sep'] = 9,
['oct'] = 10,
['nov'] = 11,
['des'] = 12, ['dec'] = 12
}
local mes_abr = string.lower(string.sub(mes_nom, 1, 3))
return mes_num[mes_abr]
end
local function formatLang(...)
return mw.language.new('ca'):formatDate(...)
end
local function f(...)
local success, data = pcall(formatLang, ...)
if success then
return data
end
return "<span style='color:red; font-weight:bold; font-style:italic'>Data incorrecta</span>[[Categoria:Pàgines amb error de referències per les dates]]"
end
function p.data_format(data, formata)
if type(data) == "table" then -- des de plantilles via invoke o des de mòduls via require
formata = data.args[2]
data = require('Module:Delink')._delink(data.args)
end
if formata == '' then formata = nil end
-- sense preposicions
data = string.gsub(data, " del? ", " ")
data = string.gsub(data, " d'", " ")
local dataparts = mw.text.split(data, "[-/., ]+")
if #dataparts == 3 then -- format precisió dia
local part1 = tonumber(dataparts[1])
local part2 = tonumber(dataparts[2])
local part3 = tonumber(dataparts[3])
local dia, mes, any
if part1 and part2 and part3 then
if part1 > 31 then -- format a m d
any = part1
mes = part2
dia = part3
elseif part2 > 12 then -- format m d a
mes = part1
dia = part2
any = part3
else -- format d m a
dia = part1
mes = part2
any = part3
end
elseif part1 and part3 then -- format d mes a
mes = mesNumero(dataparts[2])
dia = part1
any = part3
elseif part2 and part3 then -- format mes d a
mes = mesNumero(dataparts[1])
dia = part2
any = part3
end
if dia and mes and any and type(dia) == 'number' and type(mes) == 'number' and type(any) == 'number' then
local datastr = dia .. '-' .. mes .. '-' .. any
if formata == nil then
formata = 'd-m-Y'
elseif formata == 'consulta' then
if dia == 1 then
formata = 'j"r" F Y'
else
formata = 'j F Y'
end
end
return f(formata, datastr)
end
elseif #dataparts == 2 then -- format precisió mes
local part1 = tonumber(dataparts[1])
local part2 = tonumber(dataparts[2])
local mes, any
if part1 and part2 then
if part1 > 12 and part2 < 13 then -- format a m
any = part1
mes = part2
elseif part1 < 13 and part2 > 12 then -- format m a
mes = part1
any = part2
end
else -- format mes a
mes = mesNumero(dataparts[1])
any = part2
end
if mes and any and type(mes) == 'number' and type(any) == 'number' then
local datastr = '1-' .. mes .. '-' .. any
if formata == nil then
formata = 'n-Y'
elseif formata == 'consulta' then
formata = 'F Y'
end
return f(formata, datastr)
end
end
return data
end
return p