Módulo:Datas
Aparencia
[ máis información | ver o historial | | | ver as instrucións ]
Obxectivo
[editar a fonte]Fornece capacidades para facer operacións sobre datas.
Uso
[editar a fonte]Data
[editar a fonte]Formatea uhna data. Sintaxe:
{{#Invoke:Fechas|Data|<día>|<mes>|<ano>}}
- Parámetros
- enlace:
- calendario: se toma o valor "xuliano"
- maiúscula: se debe poñer a data en maiúsculas
- Ejemplos
{{#Invoke:Datas|Data|01|04|010}}
→ 1 de abril de 10{{#Invoke:Datas|Data|2|4|2010}}
→ 2 de abril de 2010{{#Invoke:Datas|Data||02|-1980}}
→ febreiro de 1980 a. C.{{#Invoke:Datas|Data||xaneiro|0980}}
→ xaneiro de 980{{#Invoke:Datas|Data|||-0980|enlace=non}}
→ 980 a. C.{{#Invoke:Datas|Data||xaneiro|0980|mayúscula=sí}}
→ xaneiro de 980{{#Invoke:Datas|Data}}
→{{#Invoke:Datas|Data|1=|2=|3=}}
→{{#Invoke:Datas|Data|26|4|1564|calendario=xuliano}}
→ 26 de abril de 1564xul.
numérica
[editar a fonte]Convierte una fecha tipo «día de mes de año» en una cadena numérica.
- Ejemplos
{{#Invoke:Datas|Numerica|24 de decembro de 2014}}
→ 20141224{{#Invoke:Datas|Numerica|4 de Xaneiro de 1913}}
→ 19130104{{#Invoke:Datas|Numerica|2 de MARZO de 14}}
→ 00140302{{#Invoke:Datas|Numerica|2 de setembro de 1976}}
→ 19760902{{#Invoke:Datas|Numerica|15 de setembro de 1976Calquera cousa}}
→ 19760915{{#Invoke:Datas|Numerica|Calquera cousa}}
→ Cadea de data non válida{{#Invoke:Datas|Numerica|dd}}
→ Cadea de data non válida{{#Invoke:Datas|Numerica|2 de turrón de 1880}}
→ Cadea de data non válida
[ máis información | ver o historial | | | ver as instrucións ]
Esta documentación está transcluída desde Módulo:Datas/uso. Os editores poden probar cambios no mesmo en Módulo:Datas/probas.
Por favor, engade as categorías na subpáxina de documentación e os interwikis no Wikidata. Ver as subpáxinas deste módulo.
Por favor, engade as categorías na subpáxina de documentación e os interwikis no Wikidata. Ver as subpáxinas deste módulo.
local z = {}
local meses = {
'xaneiro','febreiro','marzo','abril','maio','xuño','xullo','agosto','setembro','outubro','novembro','decembro'}
function z.NombreDelMes(mes)
-- Función que devolve o nome do mes, onde mes é un número entre 1 e 12.
-- Se non é así devólvese o valor de mes.
-- Por exemplo, 2 --> febreiro
-- 02 --> febreiro
-- abril --> abril
-- MAIO --> MAIO
return meses[tonumber(mes)] or mes
end
function z.Data(frame)
-- Función que formatea unha data
-- O único parámetro obrigatorio é o ano ou 3.
-- Obter os argumentos cos que se chama á función
local argumentos = {}
local parent = {}
if frame == mw.getCurrentFrame() then
if frame.args[3] or frame.args["ano"] then
argumentos = frame.args
else
parent = frame:getParent()
argumentos = parent.args
end
else
argumentos = frame
end
local enlace = argumentos["enlace"] ~= "non" and argumentos["enlace"] ~= "no"
-- Obter o día, o nome do mes e o ano incluíndo para os anos negativos a.d.
local dia = argumentos["día"] or argumentos[1] or ''
if dia ~='' then
dia=tonumber(dia) or dia -- Eliminar ceros á esquerda do día.
end
local mes = argumentos["mes"] or argumentos[2] or ''
if mes~='' then
mes =meses[tonumber(mes)] or mes
end
local anyo=tonumber(argumentos["ano"] or argumentos[3]) or 0
if anyo < 0 then
anyo = -anyo .. ' a. C.'
end
local calendario = ''
if argumentos["calendario"] == 'xuliano' then
calendario = '<sup>[[Calendario xuliano|xul.]]</sup>'
end
-- Formatar a data dependendo de se o día, o mes ou o ano están informados
if dia ~='' then
if enlace then
return '[[' .. dia .. ' de ' .. mes .. ']] de [[' .. anyo .. ']]' .. calendario
else
return dia .. ' de ' .. mes .. ' de ' .. anyo .. calendario
end
elseif mes~='' then
if argumentos["maiúscula"] == 'sí' then
mes = mw.language.new('gl'):ucfirst(mes)
end
if enlace then
return '[[' .. mes .. ']] de [[' .. anyo .. ']]'
else
return mes .. ' de ' .. anyo
end
elseif anyo ~= 0 then
if enlace then
return '[[' .. anyo .. ']]'
else
return anyo
end
end
end
function getNumeroMes(nombreMes)
local numeroMes = ''
local nombreMeses = {
['01'] = 'xaneiro', ['02'] = 'febreiro', ['03'] = 'marzo', ['04'] = 'abril', ['05'] = 'maio', ['06'] = 'xuño', ['07'] = 'xullo', ['08'] = 'agosto',
['09'] = 'setembro', ['9'] = 'setembro', ['10'] = 'outubro', ['11'] = 'novembro', ['12'] = 'decembro'
}
for k, n in pairs(nombreMeses) do
if nombreMeses[k] == mw.ustring.lower(nombreMes) then
numeroMes = k
end
end
if numeroMes == nil or numeroMes == '' then
numeroMes = '00'
end
return numeroMes
end
function setString(cadena)
local dia, mes, anno
local error = '<strong class="error">Cadea de data non válida</strong>'
local valorDia = mw.ustring.gsub(cadena,'(%d+) de %a+ de? %d+.*','%1')
if valorDia == nil or valorDia == '' or mw.ustring.len(valorDia) > 2 or type(tonumber(valorDia)) ~= 'number' then
return error
else
dia = mw.ustring.format('%02d', tonumber(valorDia))
end
local valorMes = getNumeroMes(mw.ustring.gsub(cadena,'%d+ de (%a+) de? %d+.*','%1'))
if valorMes == '00' then
return error
else
mes = mw.ustring.format('%02d',tonumber(valorMes))
end
local valorAnno = mw.ustring.gsub(cadena,'%d+ de %a+ de? (%d+).*','%1')
if valorAnno == nil or valorAnno == '' or type(tonumber(valorAnno)) ~= 'number' then
return error
else
anno = mw.ustring.format('%04d',tonumber(valorAnno))
end
local newCadena = anno..mes..dia
return newCadena
end
function z.Numerica(frame)
return setString(frame.args[1])
end
return z