Module:Date complexe
Apparence
[voir] [modifier] [historique] [purger]
Fonctions permettant de mettre en forme des dates non gérées par Module:Date, en particulier celles concernant une plage de temps plutôt qu'une date ponctuelle.
Pour un meilleur rendu, il est souvent préférable de passer comme argument plutôt que des chaînes des tables sous la forme{year = number, month = number, day = number, precision = string or number, calendar = string}
Fonctions
p.simplestring(dateobject, displayformat)
prend un objet date et le transforme en chaîne en fonction des paramètres passée en deuxième paramètre.
p.between(startpoint, endpoint, displayformat)
. Retourne "entre startpoint et endpoint". Si startpoint est absent, retourn "avant endpoint". Si endpoint est absent, retourne "après startpoint".
p.daterange(startpoint, endpoint, displayformat)
. Retourne "de startpoint à endpoint". Si startpoint est absent, retourn "jusqu'à endpoint". Si endpoint est absent, retourne "à partir de startpoint".
p.splitDate(str)
transforme une chaîne en objet date.
p.duration(startpoint, endpoint)
. Retourne la durée en jours, mois années entre startpoint et endpoint
p.before(a, b)
. Retourne true si b est avant a.
p.equal(a, b, precision)
retourne true si a et b sont identiques jusqu'à un certain niveau de précision ("day", "month" ou "year")
Exemples
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
-- Translates and format date range sand other non punctual dates
--inspired by [[Commons:Module:Other dates]]
local datemodule = require('Module:Date')
local p = {}
--[[ wikibase format
precision =
0: 1 Gigayear
1: 100 Megayears
2: 10 Megayears
3: Megayear
4: 100 Kiloyears
5: 10 Kiloyears
6: Kiloyear
7: 100 years
8: 10 years
9: years
10: months
11: days
12: hours
13: minutes
14: seconds
]]--
local function totext(obj, lang, case)
return datemodule.Wikibasedate(obj, lang, case)
end
local function from(startpoint, lang)
local precision = tonumber(startpoint.precision)
local value =
function()
if precision > 10 then -- precision > month
return "à partir du " .. totext(startpoint, lang)
else
return "à partir de " .. totext(startpoint, lang)
end
end
return value()
end
local function fromuntil(startpoint, endpoint, lang)
local precision = tonumber(startpoint.precision) -- may need 2 precisions for start and end
local value =
function() -- could actually be better should be "d'octobre à mars 2013' not "de octore 2013 à mars 2013"
if precision > 10 then -- precision > month
return "du " .. totext(startpoint, lang) .. " au " .. totext(endpoint, lang)
else
-- "DE septebmbre" / "D'octobre"
return require('Module:Linguistic').of(totext(startpoint, 'fr'), 'fr') .. " à " .. totext(endpoint, lang)
end
end
return value()
end
local function upto(endpoint, lang)
local precision = tonumber(endpoint.precision) -- may need 2 precisions for start and end
local value =
function()
if precision > 10 then -- precision > month
return "jusqu'au " .. totext(endpoint, lang)
else
return "jusqu'à " .. totext(endpoint, lang)
end
end
return value()
end
function p.wikibasedaterange(timedata, lang, case)
local startpoint, endpoint, timepoint = timedata.startpoint, timedata.endpoint, timedata.timepoint
if startpoint and endpoint then
return fromuntil(startpoint, endpoint, lang)
end
if startpoint then
return from(startpoint, lang)
end
if endpoint then
return upto(endpoint, lang)
end
if timepoint then
return datemodule.Wikibasedate(timepoint, lang)
end
end
function p.compactdaterange(timedata, lang) -- YXXX-YXXX format
local startyear, endyear = '', ''
if timedata.startpoint then
startyear = string.sub(timedata.startpoint.time, 9, 12)
end
if timedata.endpoint then
endyear = string.sub(timedata.endpoint.time, 9, 12)
end
-- remove leading zeros
while string.sub(startyear, 1,1) == '0' do
startyear = string.sub(startyear, 2)
end
while string.sub(endyear, 1,1) == '0' do
endyear = string.sub(endyear, 2)
end
return startyear .. '-' .. endyear
end
return p