Modul:Dato og alder
Denne modulen henter fødselsdatoer og dødsdatoer fra Wikidata og returnerer lenket dato og år, samt beregner alder ut i fra differansen mellom disse to. Dersom dødsdato ikke er oppgitt, beregner den alderen ut i fra differansen mellom fødselsdato og dagens dato.
Bruk
Modulen er primært tenkt brukt i infobokser, det vil si som en del av malkoden, ikke som en del av infoboksen i en artikkel.
- Eksempel for fødselsdatoer
|født= {{#if:{{{født|{{{fødselsdato|}}}}}}|{{{født|{{{fødselsdato|}}}}}}|{{#invoke:Dato og alder|bda}}}}
Dersom parameteren |født=
eller |fødselsdato=
er angitt, velges data fra disse. Dersom disse to ikke er angitt, hentes data fra Wikidata. Dersom dødsdato ikke er angitt på Wikidata, vil alder returneres i dette feltet, basert på differansen mellom dagens dato og fødselsdato. Resultatet i dette feltet vil bli lenket og på formen dd. mmmm åååå (xx år)
, evt. dd. mmmm åååå
hvis personen er død.
- Eksempel for dødsdatoer
|død= {{#if:{{{død|{{{dødsdato|}}}}}}|{{{død|{{{dødsdato|}}}}}}|{{#invoke:Dato og alder|dda}}}}
Dersom parameteren |død=
eller |dødsdato=
er angitt, velges data fra disse. Dersom disse to ikke er angitt, hentes data fra Wikidata. Dersom dersom fødselsdato ikke er angitt på Wikidata, vil den ikke returnere noe. Resultatet i dette feltet vil bli lenket og på formen dd. mmmm åååå (xx år)
.
- Modul:Dato og alder • Modul:Dato og alder/sandkasse • forskjellig (diff)
local p = {} local lang = mw.getContentLanguage() if not mw.wikibase then return "" end local artikkel = mw.wikibase.getEntity() if not artikkel then return "[[Kategori:Artikler som ikke er koblet til Wikidata]]" end local claims = artikkel.claims if not claims then return "[[Kategori:Artikler som mangler utsagn på Wikidata]]" end function p.bda(frame) local p569 = artikkel.claims.p569 if not p569 then return "" end local birthdate = artikkel.claims.p569[0].mainsnak.datavalue.value["time"] if not birthdate then return "" end birth_date = string.sub(birthdate,9,12) .. '-' .. string.sub(birthdate,14,15) .. '-' .. string.sub(birthdate,17,18) local day = lang:formatDate('j. F', birth_date) local year = lang:formatDate('Y', birth_date) assert(tonumber(year), birth_date) birth_date = day.." "..year -- birth_cat = '[[Kategori:Fødsler ' .. day .. ']][[Kategori:Fødsler i ' .. year .. ']]' (avventer dette) local d = os.date('!*t') local current_year = d.year local current_month = d.month local current_day = d.day local age local p570 = artikkel.claims.p570 if not p570 then if tonumber(current_day) >= tonumber(string.sub(birthdate,17,18)) then if tonumber(current_month) >= tonumber(string.sub(birthdate,14,15)) then age = ' (' .. tonumber(current_year) - tonumber(string.sub(birthdate,9,12)) .. ' år)' else age = ' (' .. tonumber(current_year) - tonumber(string.sub(birthdate,9,12)) - 1 .. ' år)' end else if tonumber(current_month) > tonumber(string.sub(birthdate,14,15)) then age = ' (' .. tonumber(current_year) - tonumber(string.sub(birthdate,9,12)) .. ' år)' else age = ' (' .. tonumber(current_year) - tonumber(string.sub(birthdate,9,12)) - 1 .. ' år)' end end else age = '' end return birth_date .. age -- .. birth_cat (avventer dette) end function p.dda(frame) local p570 = artikkel.claims.p570 if not p570 then return "" end local deathdate = artikkel.claims.p570[0].mainsnak.datavalue.value["time"] if not deathdate then return "" end death_date = string.sub(deathdate,9,12) .. '-' .. string.sub(deathdate,14,15) .. '-' .. string.sub(deathdate,17,18) local day = lang:formatDate('j. F', death_date) local year = lang:formatDate('Y', death_date) assert(tonumber(year), death_date) death_date = day.." "..year -- death_cat = '[[Kategori:Dødsfall ' .. day .. ']][[Kategori:Dødsfall i ' .. year .. ']]' (avventer dette) local age local birthdate = artikkel.claims.p569[0].mainsnak.datavalue.value["time"] if not birthdate then return "" end if tonumber(string.sub(deathdate,17,18)) >= tonumber(string.sub(birthdate,17,18)) then if tonumber(string.sub(deathdate,14,15)) >= tonumber(string.sub(birthdate,14,15)) then age = ' (' .. tonumber(string.sub(deathdate,9,12)) - tonumber(string.sub(birthdate,9,12)) .. ' år)' else age = ' (' .. tonumber(string.sub(deathdate,9,12)) - tonumber(string.sub(birthdate,9,12)) - 1 .. ' år)' end else if tonumber(string.sub(deathdate,14,15)) > tonumber(string.sub(birthdate,14,15)) then age = ' (' .. tonumber(string.sub(deathdate,9,12)) - tonumber(string.sub(birthdate,9,12)) .. ' år)' else age = ' (' .. tonumber(string.sub(deathdate,9,12)) - tonumber(string.sub(birthdate,9,12)) - 1 .. ' år)' end end return death_date .. age -- .. death_cat (aventer dette) end return p