Module:Date
Utilisation
Fonctions utilisables depuis un modèle
modeleDate(frame)
– affiche une date, optionnellement avec les liens les plus pertinents (précisions ci-dessous).dateISO(frame)
– similaire à modeleInscriptionDate mais la date est au format aaaa-mm-jj. Paramètres nommés année, mois, jour. Pour respecter l'ISO 8601 qui définit la date uniquement selon le calendrier grégorien, cette fonction ne retourne rien pour les dates avant 1583.dateInfobox(frame)
affiche une date avec les liens pertinents, gère correctement les paramètres contenant déjà un modèle date, ou avec du texte suivant la date (précisions ci-dessous). Prévu pour être utilisé dans les Infobox.dureeInfobox(frame)
affiche la durée entre deux dates, si elle n'est pas déjà incluse. Prévu pour être utilisé dans les Infobox.dateRepublicain(frame)
– affiche une date grégorienne au format républicain (sans liens). Paramètres 1=année, 2=mois, 3=jour.modeleAge(frame)
- retourne l'âge (nombre d'années) depuis une date ou entre deux dates. Paramètres 1=année, 2=mois, 3=jour, 4=année, 5=mois, 6=jour.erreurModuleData()
- retourne un message d'erreur si Module:Date/Data ne se charge pas correctement.checkDataCat(frame)
- retourne une liste de pages annuelle et mensuelle pour faciliter les mises à jour de Date/Data. Paramètres 1=cat, mois=liste de mois si 'oui', alias = liste tous les alias si 'oui'
Fonctions utilisables depuis un autre module
determinationMois( mois )
- à partir d'un nom de mois, de son numéro ou d'une abréviation, retourne, si le mois a bien été trouvé, son nom canonique et son numérodeterminationSaison( saison )
- à partir d'un nom de saison, retourne, si la saison a bien été trouvée, son nom canoniquedo_dayRank(arguments)
- Rang du jour dans l'année. Paramètre arguments = { année, mois, jour } ou { year = année, month = mois, day = jour }isLeapYear(year)
- retourne true si year est une année bissextile dans le calendrier grégorien.toRoman(number)
- transforme number en une chaine le représentant en « chiffres romains ».age( an, mn, jn, ac, mc, jc )
- similaire à modeleAge, mais les paramètres ne sont pas dans une tablejulianDay( year, month, day, hour, minute, second )
- retourne le jour julien de la date transmise, suivant le calendrier grégorien astronomique (avec année 0)julianDayJulian( year, month, day, hour, minute, second )
- retourne le jour julien d'une date du calendrier julien astronomique (avec année 0)julianDayToGregorian( jd )
- retourne trois variables année, mois, jour représentant la date du calendrier grégorien astronomique correspondant à ce jour julien.julianDayToJulian( jd )
- retourne trois variables année, mois, jour représentant la date du calendrier julien correspondant à ce jour julien.julianToGregorian( year, month, day )
- transforme une date du calendrier julien en date du calendrier grégorien.gregorianToJulian( year, month, day )
- transforme une date du calendrier grégorien en date du calendrier julien.
Modules externes dont ce module a besoin pour fonctionner
Date/Data
- Base de donnée permettant de ne pas tester les pages que l'on sait existantes, ou n'existant pas.TableBuilder
– Utilise.insert
et.concat
pour simplifier la syntaxe.
modeleDate( frame )
Paramètres
1
- jour ou vide - numérique, exception possible pour 1er ou 1er.2
- mois ou jour - numérique ou nom français ou anglais, éventuellement une abréviation courante.3
- année ou mois - Un nombre sera considéré comme année. Les années sont considérées comme suivant le calendrier grégorien après le 14 octobre 1582 (sauf si julien = 'oui') et le calendrier julien avant, sans année 0.4
- qualificatif ou année - texte correspondant à une page type « en photographie » pour « 2008 en photographie »5
- qualificatifage
ouâge
- non vide pour afficher l'âge (aucun âge n'est affiché pour les dates dans le futur)julien
- 'oui' pour que la date soit considérée comme suivant le calendrier julien après le 14 octobre 1582. La date grégorienne avec liens est affichée suivie de la date julienne entre parenthèses.compact
- 'oui' pour abréger le nom du mois.avJC
- 'non' pour ne pas afficher 'av. J.-C.' après l'année si elle représente une année avant Jésus-Christ. Utile pour éviter les répétitions.liens
- 'oui' pour forcer l'ajout de liens quand la date ne contient pas de qualificatif.nolinks
- 'oui' pour empêcher l'ajout de liens (a précédence surliens
).
Fonctionnement
- par défaut, le modèle n'ajoute des liens que si un qualificatif a été renseigné.
- le modèle cherche à afficher la date avec des liens vers les pages liées au qualificatif. S'il n'y a pas de page liée au qualificatif un lien sera fait vers la page générale.
- le premier paramètre est vide et le troisième correspond à un mois (texte uniquement), tous les paramètres sont considérés comme décalés et l'année ne sera pas affichée.
- s'il n'y a pas de page spécifique pour ce mois-année, le mois sera affiché lié avec le jour à l'éphéméride. Priorité est donnée à l'éphéméride du qualificatif sur le lien mois-année sans qualificatif.
- le modèle s'aide de la base de donnée Date/Data pour éviter d'utiliser la fonction mw.title (équivalent du parser #ifexist:).
- cette base permet de remplacer le qualificatif par une catégorie plus générique. Si le qualificatif est « en tennis », l'éphéméride et la page mensuelle sera liée au qualificatif « en sport ».
Fonction modeleDate
Motif testé | Chaîne testée | Module | Fonctions coûteuses modèle d'avant / module |
---|---|---|---|
date récente | 14|octobre|2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
date ancienne (1700 - 1943), jour =1 | 1|octobre|1842 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 1 |
date très ancienne (<1700), jour = 1er | 1|janvier|537 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
qualificatif qui n'est pas dans la base | 14|octobre|2010|en animation asiatique | Erreur de script : la fonction « modeleDate » n’existe pas. | 4 / 1 |
date ancienne, qualificatif qui n'est pas dans la base | 14|octobre|1842|en animation asiatique | Erreur de script : la fonction « modeleDate » n’existe pas. | 4 / 2 |
avec qualificatif | 14|Octobre|2001|en astronautique | Erreur de script : la fonction « modeleDate » n’existe pas. | 3 / 0 |
avec qualificatif avec éphémérides | 14|octobre|2005|dans les chemins de fer | Erreur de script : la fonction « modeleDate » n’existe pas. | 4 / 0 |
pas de jour | |octobre|2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
pas de jour avec qualificatif | |Octobre|2001|en astronautique | Erreur de script : la fonction « modeleDate » n’existe pas. | 3 / 0 |
qualificatif avec page annuelle qui pourrait exister | 14|octobre|2006|en Égypte | Erreur de script : la fonction « modeleDate » n’existe pas. | 4 / 1 |
qualificatif avec page mensuelle existante | 14|octobre|2008|en France | Erreur de script : la fonction « modeleDate » n’existe pas. | 3 / 0 |
qualificatif avec page mensuelle qui pourrait exister | 14|octobre|2012|en France | Erreur de script : la fonction « modeleDate » n’existe pas. | 4 / 1 |
qualificatif avec page annuelle et mensuelle qui pourrait exister | 14|octobre|2012|en économie | Erreur de script : la fonction « modeleDate » n’existe pas. | 4 / 2 |
date ancienne avec qualificatif | 14|octobre|1845|en aéronautique | Erreur de script : la fonction « modeleDate » n’existe pas. | 4 / 1 |
date négative | 13|octobre|-63 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
date av. J.-C. (orthographe de la page) | 1|octobre|63 av. J.-C. | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
date avJC (orthographe abrégée) | 13|octobre|63 avJC | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
date négative, paramètre pour cacher av. J.-C. | 13|octobre|-63|avJC=non | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
année invalide | 14|octobre|2001 en sport | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
jour + mois avec majuscule | 14|Octobre|2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
mois en abrégé | 14|oct.|2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
mois en chiffre | 14|10|2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
mois invalide | 14|otcobre|2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
jour invalide | jeudi 14|octobre|2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
jour invalide (trop grand pour le mois) | 31|septembre|2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
uniquement l’année | ||2001 | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
uniquement l’année avec qualificatif | ||2001|en littérature | Erreur de script : la fonction « modeleDate » n’existe pas. | 1 / 0 |
sans année | 14|octobre | Erreur de script : la fonction « modeleDate » n’existe pas. | 0 / 0 |
jour uniquement | 14 | Erreur de script : la fonction « modeleDate » n’existe pas. | 0 / 0 |
mois uniquement | |Octobre | Erreur de script : la fonction « modeleDate » n’existe pas. | 0 / 0 |
sans argument | Erreur de script : la fonction « modeleDate » n’existe pas. | 0 / 0 | |
date du calendrier julien | 1|octobre|2001|julien=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | |
date du calendrier julien (changement de mois) | 25|octobre|2001|julien=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | |
date du calendrier julien (changement d'année) | 25|décembre|2001|julien=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | |
date de naissance | 14|octobre|2001|age=oui | Erreur de script : la fonction « modeleDate » n’existe pas. |
Comparaison avec {{date de naissance}}
- les fonctions coûteuses sont les mêmes que celles du modèle Date
- sans l'âge, voir comparaison avec {{Date}}
Motif testé | Chaîne testée | Modèle Date de naissance | Module |
---|---|---|---|
simple | 1|8|2006|âge=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | Erreur de script : la fonction « modeleDate » n’existe pas. |
avec qualificatif | 1|août|2006|en Suisse|age=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | Erreur de script : la fonction « modeleDate » n’existe pas. |
date ancienne | 2|1|598|age=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | Erreur de script : la fonction « modeleDate » n’existe pas. |
l'an dernier | 2|1|2012|age=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | Erreur de script : la fonction « modeleDate » n’existe pas. |
cette année | 2|1|2013|age=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | Erreur de script : la fonction « modeleDate » n’existe pas. |
l'an prochain | 2|1|2014|age=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | Erreur de script : la fonction « modeleDate » n’existe pas. |
sans jour | |8|2006|âge=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | Erreur de script : la fonction « modeleDate » n’existe pas. |
annee seule | ||2006|âge=oui | Erreur de script : la fonction « modeleDate » n’existe pas. | Erreur de script : la fonction « modeleDate » n’existe pas. |
dateInfobox( frame )
Fonction destinée aux infobox, notamment pour afficher les dates de naissance et de mort. Les dates sont affichées avec des liens. Gère les cas où le paramètre contient déjà un modèle date. Le contenu du paramètre situé après la date (par exemple un lieu, une référence) est conservé.
Paramètres
- 1 : type de date à afficher (naissance / n, mort / m, ou date / d)
- 2 : Date ou date de naissance
- 3 : Date de mort si type n ou m
qualificatif
: suffixe des pages de date à lier (exemple : en musique)nolinks
: n'affiche pas de lienpréfixe
: préfixe à afficher s'il y a un jour (par défaut vide)préfixe sans jour
: préfixe à afficher s'il n'y a pas de jour (par défaut vide)
Ces paramètres doivent être directement dans le #invoke appelant la fonction.
Exemples
{{#invoke:Date|dateInfobox|date|13 juillet 1927}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|naissance|13 juillet 1927|}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|naissance|13 juillet 1927|14 mai 2017}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|naissance|30 juin 2017-}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|mort|13 juillet 1927|30 juin 2017}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|mort||30 juin 2017}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|mort|13 juillet 1927|}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|date|13 juillet 1927| qualificatif = en France}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|date|13 juillet 1927| préfixe = le}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|date|13 juillet 1927| préfixe = le | préfixe sans jour = en}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|date|juillet 1927| préfixe = le}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|date|juillet 1927| préfixe = le | préfixe sans jour = en}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|date|13 juillet [[1927]]}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|date|13 juillet [[1927 en France|1927]]}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.{{#invoke:Date|dateInfobox|date|{{date|13 juillet 1927|en France}}}}
→ Erreur de script : la fonction « dateInfobox » n’existe pas.
dureeInfobox( frame )
Fonction destinée aux infobox, pour afficher la durée entre deux dates, notamment pour un poste ou une fonction. Gère les cas où la durée est déjà spécifiée dans l'une des valeurs. La durée est préfixée d'un retour à la ligne (<br />
) et écrite en petit (<small>
).
Paramètres
- 1 : Date de début
- 2 : Date de fin (optionnelle, date du jour par défaut)
Ces paramètres doivent être directement dans le #invoke appelant la fonction.
Exemples
{{#invoke:Date|dureeInfobox|8 septembre 2022}}
→ Erreur de script : la fonction « dureeInfobox » n’existe pas.{{#invoke:Date|dureeInfobox|{{date|27 juin 1940-}}|{{date|6 septembre 1940}}}}
→ Erreur de script : la fonction « dureeInfobox » n’existe pas.
Voir aussi : les tests unitaires et ceux du bac à sable.
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.
local fun = {}
-- Rang du jour dans l'année
-- Usage : do_dayRank{année,mois,jour}
function fun.do_dayRank(arguments)
local yr = tonumber(arguments.year or arguments[1])
local mt = tonumber(arguments.month or arguments[2]) or 1
local dy = tonumber(arguments.day or arguments[3]) or 1
-- Rangs des premiers des mois
local ranks = {0,31,59,90,120,151,181,212,243,273,304,334}
local rank = (ranks[mt] or 0) + dy - 1
if(fun.isLeapYear(yr) and (mt >= 3)) then
rank = rank+1
end
return rank
end
-- Nombre de jours entre deux années (du 1er janvier au 1er janvier)
-- Suit le calendrier grégorien
function fun.do_daysBetween(arguments)
local yr1 = tonumber(arguments[1]) or 0
local yr2 = tonumber(arguments[2]) or 0
return fun.daysSinceOrigin(yr2) - fun.daysSinceOrigin(yr1)
end
-- Nombre de jours depuis l'année 1 (du 1er janvier au 1er janvier)
function fun.daysSinceOrigin(year)
local yr = year-1
return 365*yr + math.floor(yr/4) - math.floor(yr/100) + math.floor(yr/400)
end
-- Test d'année bissextile
function fun.isLeapYear(year)
local yr = tonumber(year) or 1
return (yr%4 == 0) and ((yr%100 ~= 0) or (yr%400 == 0))
end
-- Conversion d'un nombre en chiffres romains
function fun.toRoman(number)
local n = math.floor(number)
local letters = {"I","V","X","L","C","D","M","",""}
local pattern = {"","0","00","000","01","1","10","100","1000","02"}
local result = ""
if(n<=0 or n>=4000) then
result = "---"
else
for i=1,7,2 do
p = pattern[n%10 + 1]
for j=0,2 do
p = string.gsub(p,tostring(j),letters[i+j])
end
result = p .. result
n = math.floor(n/10)
end
end
return result
end
-- Conversion et affichage d'une date dans le calendrier républicain
function fun.dateRepublicain(frame)
local pframe = frame:getParent()
local arguments = pframe.args
return fun.formatRepCal(fun.do_toRepCal(arguments))
end
-- Calcul d'une date dans le calendrier républicain
-- On suppose que les années 4n+3 sont sextiles (3, 7, 11...)
function fun.do_toRepCal(arguments)
local yr = tonumber(arguments.year or arguments[1]) or 2000
-- rang absolu du jour demandé, le jour 0 étant le 22 septembre 1792 (1er jour de l'an I)
local repDays = fun.do_dayRank(arguments) + fun.do_daysBetween(1792,yr) - fun.do_dayRank{1792,7,22}
local repYear = math.floor((repDays+731)/365.25) - 1
local repDayRank = repDays - 365*(repYear-1) - math.floor(repYear/4)
local repMonth, repDay = math.floor(repDayRank/30)+1, (repDayRank%30)+1
return {repYear, repMonth, repDay}
end
-- Formatage d'une date selon le calendrier républicain
-- Usage : fun.formatRepCal{année,mois,jour}
function fun.formatRepCal(arguments)
local months = {"Vendémiaire","Brumaire","Frimaire","Nivôse","Pluviôse","Ventôse","Germinal","Floréal","Prairial","Messidor","Thermidor","Fructidor"}
local extras = {"de la vertu","du génie","du travail","des récompenses","de l'opinion","de la révolution"}
local result = ""
if(arguments[2] < 13) then
result = result .. tostring(arguments[3]) .. " " .. months[arguments[2]]
else
result = result .. "jour " .. extras[arguments[3]]
end
result = result .. " de l'an " .. fun.toRoman(arguments[1])
return result
end
return fun