<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.froce.fr//index.php?action=history&amp;feed=atom&amp;title=Module%3ADur%C3%A9e</id>
	<title>Module:Durée - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.froce.fr//index.php?action=history&amp;feed=atom&amp;title=Module%3ADur%C3%A9e"/>
	<link rel="alternate" type="text/html" href="https://wiki.froce.fr//index.php?title=Module:Dur%C3%A9e&amp;action=history"/>
	<updated>2026-04-11T22:37:10Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.froce.fr//index.php?title=Module:Dur%C3%A9e&amp;diff=2409&amp;oldid=prev</id>
		<title>Alexandre Lacroix Le Menn : Page créée avec « local p = {}  -- liste des mois, écriture exacte et simplifiée, en minuscule local liste_mois = { 	{ &quot;janvier&quot;, &quot;jan.&quot;, &quot;janv.&quot;, &quot;jan&quot;, &quot;janv&quot;, &quot;january&quot;, nJour = 31 }, 	{ &quot;février&quot;, &quot;fevrier&quot;, &quot;fev.&quot;, &quot;fev&quot;, &quot;fév.&quot;, &quot;fév&quot;, &quot;february&quot;, nJour = 28 }, 	{ &quot;mars&quot;, &quot;mar.&quot;, &quot;mar&quot;, &quot;march&quot;, nJour = 31 }, 	{ &quot;avril&quot;, &quot;avr.&quot;, &quot;avr&quot;, &quot;apr&quot;, &quot;april&quot;, nJour = 30 }, 	{ &quot;mai&quot;, &quot;may&quot;, nJour = 31 }, 	{ &quot;juin&quot;, &quot;jun&quot;, &quot;june&quot;, nJour = 30 }, 	{ &quot;juillet&quot;, &quot;juil.&quot;, &quot;juil&quot;, &quot;juill.&quot;... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.froce.fr//index.php?title=Module:Dur%C3%A9e&amp;diff=2409&amp;oldid=prev"/>
		<updated>2021-12-28T16:44:29Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « local p = {}  -- liste des mois, écriture exacte et simplifiée, en minuscule local liste_mois = { 	{ &amp;quot;janvier&amp;quot;, &amp;quot;jan.&amp;quot;, &amp;quot;janv.&amp;quot;, &amp;quot;jan&amp;quot;, &amp;quot;janv&amp;quot;, &amp;quot;january&amp;quot;, nJour = 31 }, 	{ &amp;quot;février&amp;quot;, &amp;quot;fevrier&amp;quot;, &amp;quot;fev.&amp;quot;, &amp;quot;fev&amp;quot;, &amp;quot;fév.&amp;quot;, &amp;quot;fév&amp;quot;, &amp;quot;february&amp;quot;, nJour = 28 }, 	{ &amp;quot;mars&amp;quot;, &amp;quot;mar.&amp;quot;, &amp;quot;mar&amp;quot;, &amp;quot;march&amp;quot;, nJour = 31 }, 	{ &amp;quot;avril&amp;quot;, &amp;quot;avr.&amp;quot;, &amp;quot;avr&amp;quot;, &amp;quot;apr&amp;quot;, &amp;quot;april&amp;quot;, nJour = 30 }, 	{ &amp;quot;mai&amp;quot;, &amp;quot;may&amp;quot;, nJour = 31 }, 	{ &amp;quot;juin&amp;quot;, &amp;quot;jun&amp;quot;, &amp;quot;june&amp;quot;, nJour = 30 }, 	{ &amp;quot;juillet&amp;quot;, &amp;quot;juil.&amp;quot;, &amp;quot;juil&amp;quot;, &amp;quot;juill.&amp;quot;... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- liste des mois, écriture exacte et simplifiée, en minuscule&lt;br /&gt;
local liste_mois = {&lt;br /&gt;
	{ &amp;quot;janvier&amp;quot;, &amp;quot;jan.&amp;quot;, &amp;quot;janv.&amp;quot;, &amp;quot;jan&amp;quot;, &amp;quot;janv&amp;quot;, &amp;quot;january&amp;quot;, nJour = 31 },&lt;br /&gt;
	{ &amp;quot;février&amp;quot;, &amp;quot;fevrier&amp;quot;, &amp;quot;fev.&amp;quot;, &amp;quot;fev&amp;quot;, &amp;quot;fév.&amp;quot;, &amp;quot;fév&amp;quot;, &amp;quot;february&amp;quot;, nJour = 28 },&lt;br /&gt;
	{ &amp;quot;mars&amp;quot;, &amp;quot;mar.&amp;quot;, &amp;quot;mar&amp;quot;, &amp;quot;march&amp;quot;, nJour = 31 },&lt;br /&gt;
	{ &amp;quot;avril&amp;quot;, &amp;quot;avr.&amp;quot;, &amp;quot;avr&amp;quot;, &amp;quot;apr&amp;quot;, &amp;quot;april&amp;quot;, nJour = 30 },&lt;br /&gt;
	{ &amp;quot;mai&amp;quot;, &amp;quot;may&amp;quot;, nJour = 31 },&lt;br /&gt;
	{ &amp;quot;juin&amp;quot;, &amp;quot;jun&amp;quot;, &amp;quot;june&amp;quot;, nJour = 30 },&lt;br /&gt;
	{ &amp;quot;juillet&amp;quot;, &amp;quot;juil.&amp;quot;, &amp;quot;juil&amp;quot;, &amp;quot;juill.&amp;quot;, &amp;quot;juill&amp;quot;, &amp;quot;jul&amp;quot;, &amp;quot;july&amp;quot;, nJour = 31 },&lt;br /&gt;
	{ &amp;quot;août&amp;quot;, &amp;quot;aout&amp;quot;, &amp;quot;aou&amp;quot;, &amp;quot;aug&amp;quot;, &amp;quot;august&amp;quot;, nJour = 31 },&lt;br /&gt;
	{ &amp;quot;septembre&amp;quot;, &amp;quot;sept.&amp;quot;, &amp;quot;sept&amp;quot;, &amp;quot;sep.&amp;quot;, &amp;quot;sep&amp;quot;, &amp;quot;september&amp;quot;, nJour = 30 },&lt;br /&gt;
	{ &amp;quot;octobre&amp;quot;, &amp;quot;oct.&amp;quot;, &amp;quot;oct&amp;quot;, &amp;quot;october&amp;quot;, nJour = 31 },&lt;br /&gt;
	{ &amp;quot;novembre&amp;quot;, &amp;quot;nov.&amp;quot;, &amp;quot;nov&amp;quot;, &amp;quot;november&amp;quot;, nJour = 30 },&lt;br /&gt;
	{ &amp;quot;décembre&amp;quot;, &amp;quot;decembre&amp;quot;, &amp;quot;déc.&amp;quot;, &amp;quot;dec.&amp;quot;, &amp;quot;dec&amp;quot;, &amp;quot;déc&amp;quot;, &amp;quot;december&amp;quot;, nJour = 31 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function joursMois( m, a )&lt;br /&gt;
	a = a or 1&lt;br /&gt;
	if m == 0 then&lt;br /&gt;
		return 31&lt;br /&gt;
	elseif m == 2 then&lt;br /&gt;
		local b = ( a % 4 == 0 ) and ( ( a % 100 ~= 0 ) or ( a % 400 == 0 ) )&lt;br /&gt;
		return 28 + ( b and 1 or 0 )&lt;br /&gt;
	else&lt;br /&gt;
		return liste_mois[m].nJour&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function erreur( texte )&lt;br /&gt;
	local cat = '[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|Durée]]'&lt;br /&gt;
	local message = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;erreur : '  .. texte .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
	local ns = mw.title.getCurrentTitle().namespace&lt;br /&gt;
	if ns == 0 then&lt;br /&gt;
		return message .. cat&lt;br /&gt;
	else&lt;br /&gt;
		return message&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
local function determinationMois( mois )&lt;br /&gt;
	if tonumber( mois ) then&lt;br /&gt;
		local num = math.floor( tonumber( mois ) )&lt;br /&gt;
		if num &amp;gt; 0 and num &amp;lt;= 12 then&lt;br /&gt;
			return num&lt;br /&gt;
		end&lt;br /&gt;
	elseif type( mois ) == 'string' and mw.text.trim( mois ) ~= '' then&lt;br /&gt;
		local nom = mw.ustring.lower( mois )&lt;br /&gt;
		for num = 1, 12 do&lt;br /&gt;
			local i = 1&lt;br /&gt;
			while liste_mois[num][i] do&lt;br /&gt;
				if liste_mois[num][i] == nom then&lt;br /&gt;
					return num&lt;br /&gt;
				end&lt;br /&gt;
				i = i + 1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._duree( args )&lt;br /&gt;
	local maintenant = os.date( '!*t' )&lt;br /&gt;
	local fuseau = mw.getContentLanguage():formatDate(&amp;quot;Z&amp;quot;, nil, true)/3600&lt;br /&gt;
	if maintenant.hour + fuseau &amp;gt; 23 then&lt;br /&gt;
		maintenant.day = maintenant.day + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local params = {}&lt;br /&gt;
	local precision = 'jour'&lt;br /&gt;
	local jour1 = tonumber( args[1] )&lt;br /&gt;
	if not jour1 then&lt;br /&gt;
		precision = 'mois'&lt;br /&gt;
		jour1 = maintenant.day&lt;br /&gt;
	end&lt;br /&gt;
	local mois1 = determinationMois( args[2] )&lt;br /&gt;
	if not mois1 then &lt;br /&gt;
		if precision == 'mois' then&lt;br /&gt;
			precision = 'an'&lt;br /&gt;
			mois1 = maintenant.month&lt;br /&gt;
		else&lt;br /&gt;
			return erreur( 'mois invalide (' .. ( args[2] or '' ) .. ')' )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local annee1 = tonumber( args[3] )&lt;br /&gt;
	if not annee1 then&lt;br /&gt;
		if precision == 'an' then&lt;br /&gt;
			return&lt;br /&gt;
		else&lt;br /&gt;
			annee1 = maintenant.year&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local jour2 = tonumber( args[4] ) or maintenant.day&lt;br /&gt;
	local mois2 = determinationMois( args[5] ) or maintenant.month&lt;br /&gt;
	local annee2 = tonumber( args[6])  or maintenant.year&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
	local tri = os.difftime(&lt;br /&gt;
		os.time{ year = annee2, month = mois2, day = jour2 },&lt;br /&gt;
		os.time{ year = annee1, month = mois1, day = jour1 }&lt;br /&gt;
		) / 86400&lt;br /&gt;
	if tri &amp;lt; 0 then&lt;br /&gt;
		return erreur( 'durée inférieure à 0' )&lt;br /&gt;
	end&lt;br /&gt;
	tri = 0 .. tostring( tri )&lt;br /&gt;
	tri = string.rep( '&amp;amp;', 16 - #tri ) .. tri&lt;br /&gt;
	&lt;br /&gt;
	local njour = jour2 - jour1&lt;br /&gt;
	local nmois = mois2 - mois1&lt;br /&gt;
	local nannee = annee2 - annee1&lt;br /&gt;
	if njour &amp;lt; 0 then&lt;br /&gt;
		nmois = nmois - 1&lt;br /&gt;
		njour = njour + joursMois( mois2 - 1, annee2 )&lt;br /&gt;
	end&lt;br /&gt;
	if nmois &amp;lt; 0 then&lt;br /&gt;
		nannee = nannee - 1&lt;br /&gt;
		nmois = nmois + 12&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = {}&lt;br /&gt;
	local function add( nombre, singulier, pluriel )&lt;br /&gt;
		if nombre &amp;gt; 0 then&lt;br /&gt;
			local texte = pluriel&lt;br /&gt;
			if nombre == 1 then&lt;br /&gt;
				texte = singulier&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( result, nombre .. '\194\160' .. texte )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	add( nannee, 'an', 'ans' )&lt;br /&gt;
	if precision ~= 'an' then&lt;br /&gt;
		add( nmois, 'mois', 'mois' )&lt;br /&gt;
	end&lt;br /&gt;
	if precision == 'jour' then&lt;br /&gt;
		add( njour, 'jour', 'jours' )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #result == 0 then&lt;br /&gt;
		result[1] = 'moins d’un ' .. precision&lt;br /&gt;
		tri = 0&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return mw.text.tag{ &lt;br /&gt;
		name = 'span', &lt;br /&gt;
		attrs = { class = 'datasortkey', ['data-sort-value'] = tri }, &lt;br /&gt;
		content = mw.text.listToText( result )&lt;br /&gt;
		}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.duree( frame )&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	for i = 1, 6 do&lt;br /&gt;
		if tonumber( args[i] ) == 0 then&lt;br /&gt;
			args[i] = ''&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p._duree( args )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alexandre Lacroix Le Menn</name></author>
	</entry>
</feed>