<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lugwiki.stcgrupo.es/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AMagicDate</id>
	<title>Module:MagicDate - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://lugwiki.stcgrupo.es/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AMagicDate"/>
	<link rel="alternate" type="text/html" href="https://lugwiki.stcgrupo.es/index.php?title=Module:MagicDate&amp;action=history"/>
	<updated>2026-04-16T00:11:56Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://lugwiki.stcgrupo.es/index.php?title=Module:MagicDate&amp;diff=1408&amp;oldid=prev</id>
		<title>Admin : 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://lugwiki.stcgrupo.es/index.php?title=Module:MagicDate&amp;diff=1408&amp;oldid=prev"/>
		<updated>2021-04-10T11:25:37Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 10 avril 2021 à 11:25&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawiki:diff:1.41:old-1407:rev-1408 --&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://lugwiki.stcgrupo.es/index.php?title=Module:MagicDate&amp;diff=1407&amp;oldid=prev</id>
		<title>module&gt;Hexasoft : doc</title>
		<link rel="alternate" type="text/html" href="https://lugwiki.stcgrupo.es/index.php?title=Module:MagicDate&amp;diff=1407&amp;oldid=prev"/>
		<updated>2013-03-04T15:12:30Z</updated>

		<summary type="html">&lt;p&gt;doc&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
  ce module a pour but − uniquement pour fr: − d&amp;#039;émuler les fonctions retournant&lt;br /&gt;
  la date et heure sous diverses formes.&lt;br /&gt;
  Il s&amp;#039;agit des pseudo-modèles {{CURRENTYEAR}}, {{CURRENTHOUR}}…&lt;br /&gt;
  Utilise l&amp;#039;heure UTC + 1h, car c&amp;#039;est l&amp;#039;heure utilisée sur fr:&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--- fonctions pour traiter les mises en format spécifiques&lt;br /&gt;
-- passage format %02d → %d&lt;br /&gt;
function p.ft_2_1(valeur, opt)&lt;br /&gt;
    return tonumber(valeur) or &amp;quot;err&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
-- passage format %d → %02d&lt;br /&gt;
function p.ft_1_2(valeur, opt)&lt;br /&gt;
    if (opt == nil or opt == &amp;quot;&amp;quot;) then&lt;br /&gt;
        return mw.ustring.format(&amp;quot;%02d&amp;quot;, valeur) or &amp;quot;err&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        return mw.ustring.format(&amp;quot;%0&amp;quot; .. opt .. &amp;quot;d&amp;quot;, valeur) or &amp;quot;err&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- liste des codes et clé d&amp;#039;accès date&lt;br /&gt;
-- format :&lt;br /&gt;
--  [mot-clé] = { &amp;quot;code date&amp;quot;, fonction à appliquer, nil }&lt;br /&gt;
-- si fonction ~= nil alors la valeur retournée est fonction(retour-code-date)&lt;br /&gt;
-- le dernier paramètre dépend de la fonction&lt;br /&gt;
p.access = {&lt;br /&gt;
    [&amp;quot;YEAR&amp;quot;] = {&amp;quot;Y&amp;quot;,nil,nil, &amp;quot;Année sur 4 chiffres&amp;quot;}, [&amp;quot;MONTH&amp;quot;] = {&amp;quot;m&amp;quot;,nil,nil, &amp;quot;Mois sur 2 chiffres (01-12)&amp;quot;},&lt;br /&gt;
    [&amp;quot;MONTH2&amp;quot;] = {&amp;quot;m&amp;quot;,nil,nil, &amp;quot;Mois sur 2 chiffres (01-12)&amp;quot;}, [&amp;quot;MONTH1&amp;quot;] = {&amp;quot;n&amp;quot;,nil,nil, &amp;quot;Mois sur 1 ou 2 chiffres (1-12)&amp;quot;},&lt;br /&gt;
    [&amp;quot;MONTHNAME&amp;quot;] = {&amp;quot;F&amp;quot;,nil,nil, &amp;quot;Nom du mois&amp;quot;}, [&amp;quot;MONTHABBREV&amp;quot;] = {&amp;quot;M&amp;quot;,nil,nil, &amp;quot;Nom abrégé du mois&amp;quot;},&lt;br /&gt;
    [&amp;quot;WEEK&amp;quot;] = {&amp;quot;W&amp;quot;, nil,nil, &amp;quot;Numéro de la semaine (ISO8601) sur 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;WEEK2&amp;quot;] = {&amp;quot;W&amp;quot;, nil,nil, &amp;quot;Numéro de la semaine (ISO8601) sur 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;WEEK1&amp;quot;] = {&amp;quot;W&amp;quot;, p.ft_2_1,nil, &amp;quot;Numéro de la semaine (ISO8601) sur 1 ou 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;DAY&amp;quot;] = {&amp;quot;j&amp;quot;,nil,nil, &amp;quot;Numéro du jour du mois sur 1 ou 2 chiffres&amp;quot;}, [&amp;quot;DAY1&amp;quot;] = {&amp;quot;j&amp;quot;,nil,nil, &amp;quot;Numéro du jour du mois sur 1 ou 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;DAY2&amp;quot;] = {&amp;quot;d&amp;quot;,nil,nil, &amp;quot;Numéro du jour du mois sur 2 chiffres&amp;quot;}, [&amp;quot;DAYNAME&amp;quot;] = {&amp;quot;l&amp;quot;,nil,nil, &amp;quot;Nom du jour&amp;quot;},&lt;br /&gt;
    [&amp;quot;DAYABBREV&amp;quot;] = {&amp;quot;D&amp;quot;,nil,nil, &amp;quot;Nom abrégé du jour&amp;quot;}, [&amp;quot;DOW&amp;quot;] = {&amp;quot;N&amp;quot;,nil,nil, &amp;quot;Numéro du jour de la semaine (ISO8601)&amp;quot;},&lt;br /&gt;
    [&amp;quot;DOY&amp;quot;] = {&amp;quot;z&amp;quot;,nil,nil, &amp;quot;Numéro du jour dans l&amp;#039;année sur 1 à 3 chiffres&amp;quot;}, [&amp;quot;DOY3&amp;quot;] = {&amp;quot;z&amp;quot;,p.ft_1_2,3, &amp;quot;Numéro du jour dans l&amp;#039;année sur 3 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;TIME&amp;quot;] = {&amp;quot;H:i&amp;quot;,nil,nil, &amp;quot;Heure au format HH:MM&amp;quot;}, [&amp;quot;HOUR&amp;quot;] = {&amp;quot;G&amp;quot;,nil,nil, &amp;quot;Heure sur 1 ou 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;HOUR1&amp;quot;] = {&amp;quot;G&amp;quot;,nil,nil, &amp;quot;Heure sur 1 ou 2 chiffres&amp;quot;}, [&amp;quot;HOUR2&amp;quot;] = {&amp;quot;H&amp;quot;,nil,nil, &amp;quot;Heure sur 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;MIN&amp;quot;] = {&amp;quot;i&amp;quot;,nil,nil, &amp;quot;Minute sur 2 chiffres&amp;quot;},  [&amp;quot;MIN2&amp;quot;] = {&amp;quot;i&amp;quot;,nil,nil, &amp;quot;Minute sur 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;MIN1&amp;quot;] = {&amp;quot;i&amp;quot;,p.ft_2_1,nil, &amp;quot;Minute sur 1 ou 2 chiffres&amp;quot;}, [&amp;quot;SEC&amp;quot;] = {&amp;quot;s&amp;quot;,nil,nil, &amp;quot;Seconde sur 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;SEC2&amp;quot;] = {&amp;quot;s&amp;quot;,nil,nil, &amp;quot;Seconde sur 2 chiffres&amp;quot;}, [&amp;quot;SEC1&amp;quot;] = {&amp;quot;s&amp;quot;,p.ft_2_1,nil, &amp;quot;Seconde sur 1 ou 2 chiffres&amp;quot;},&lt;br /&gt;
    [&amp;quot;UNIX&amp;quot;] = {&amp;quot;U&amp;quot;,nil,nil, &amp;quot;Temps au format UNIX&amp;quot;}, [&amp;quot;TIMESTAMP&amp;quot;] = {&amp;quot;YmdHis&amp;quot;,nil,nil, &amp;quot;Temps au format AAAAMMJJHHmmSS&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- fonction &amp;quot;#ifexist&amp;quot;, en attendant que mw.title soit intégré et fournisse cette fonctionnalité&lt;br /&gt;
function p.ifexist(page, frame)&lt;br /&gt;
    if (page == nil or type(page) ~= &amp;quot;string&amp;quot; or page == &amp;quot;&amp;quot;) then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    local res = frame:preprocess(&amp;quot;{{#ifexist:&amp;quot; .. page .. &amp;quot;|oui}}&amp;quot;)&lt;br /&gt;
    if (res == &amp;quot;oui&amp;quot;) then&lt;br /&gt;
        return true&lt;br /&gt;
    else&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- vire les espaces au début et à la fin&lt;br /&gt;
function p.nettoie(texte)&lt;br /&gt;
    if (texte == nil or texte == &amp;quot;&amp;quot;) then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    if (type(texte) ~= &amp;quot;string&amp;quot;) then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.ustring.gsub(mw.ustring.gsub(texte, &amp;quot;^%s*&amp;quot;, &amp;quot;&amp;quot;), &amp;quot;%s*$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- retourne l&amp;#039;élément de date/heure demandé en suivant le format&lt;br /&gt;
-- des {{LOCALYEAR}}, {{LOCALTIME}} …&lt;br /&gt;
function p.selecteur_date(frame, larg)&lt;br /&gt;
    local quoi&lt;br /&gt;
    -- spécial : si larg ~= nil on est appelé depuis une autre fonction,&lt;br /&gt;
    -- on l&amp;#039;utilise comme paramètre&lt;br /&gt;
    if (larg == nil) then&lt;br /&gt;
        -- paramètres. frame.args pour le moment durant les tests&lt;br /&gt;
        local args = frame.args&lt;br /&gt;
        -- local args = frame:getParent().args&lt;br /&gt;
&lt;br /&gt;
        -- gestion des paramètres : ce qui est demandé&lt;br /&gt;
        quoi = p.nettoie(args[1])&lt;br /&gt;
    else&lt;br /&gt;
        quoi = larg&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- validation&lt;br /&gt;
    if (quoi == &amp;quot;&amp;quot;) then&lt;br /&gt;
        return &amp;quot;{{???}}&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- commence par LOCAL ou par CURRENT ?&lt;br /&gt;
    -- &amp;quot;mode&amp;quot; contient l&amp;#039;option à passer à formatDate (local ou UTC),&lt;br /&gt;
    -- et &amp;quot;sel&amp;quot; contient le mot-clé d&amp;#039;accès&lt;br /&gt;
    local mode = true&lt;br /&gt;
    local sel = &amp;quot;&amp;quot;&lt;br /&gt;
    local tst = string.match(quoi, &amp;quot;^LOCAL&amp;quot;)&lt;br /&gt;
    if (tst ~= nil) then&lt;br /&gt;
        -- heure locale&lt;br /&gt;
        sel = string.match(quoi, &amp;quot;^LOCAL(.*)$&amp;quot;)&lt;br /&gt;
        -- on recupère l&amp;#039;heure locale&lt;br /&gt;
        mode = true&lt;br /&gt;
    else&lt;br /&gt;
        tst = string.match(quoi, &amp;quot;^CURRENT&amp;quot;)&lt;br /&gt;
        if (tst ~= nil) then&lt;br /&gt;
            -- heure UTC&lt;br /&gt;
            sel = string.match(quoi, &amp;quot;^CURRENT(.*)$&amp;quot;)&lt;br /&gt;
            -- on récupère l&amp;#039;heure UTC&lt;br /&gt;
            mode = false&lt;br /&gt;
        else&lt;br /&gt;
            -- code invalide&lt;br /&gt;
            return &amp;quot;C/L {{&amp;quot; .. quoi .. &amp;quot;}}&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- on cherche l&amp;#039;élément demandé dans la table&lt;br /&gt;
    local act = p.access[sel]&lt;br /&gt;
    if (act == nil) then&lt;br /&gt;
        return &amp;quot; A {{&amp;quot; .. quoi .. &amp;quot;}}&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- on récupère un objet pour le currentLanguage&lt;br /&gt;
    local loc = mw.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
    -- on récupère le retour de formatDate au format indiqué&lt;br /&gt;
    local resu = loc:formatDate(act[1], nil, mode)&lt;br /&gt;
    -- si il y a une fonction associée on l&amp;#039;appelle&lt;br /&gt;
    if (act[2] ~= nil) then&lt;br /&gt;
        resu = act[2](resu, act[3])&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- on retourne le résultat&lt;br /&gt;
    return resu&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- fonction d&amp;#039;auto-documentation. Génère en sortie un tableau contenant toutes les&lt;br /&gt;
-- valeurs possibles avec leur résultat&lt;br /&gt;
function p.selecteur_date_doc(frame)&lt;br /&gt;
    local res = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- on génère une table des éléments existant, afin de pouvoir faire un parcours par&lt;br /&gt;
    -- ordre alphabétique&lt;br /&gt;
    local tbl = {}&lt;br /&gt;
    for code, v in pairs(p.access) do&lt;br /&gt;
        table.insert(tbl, code) -- on range&lt;br /&gt;
    end&lt;br /&gt;
    table.sort(tbl) -- on trie&lt;br /&gt;
&lt;br /&gt;
    -- entete&lt;br /&gt;
    res = res .. &amp;#039;&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&amp;lt;caption&amp;gt;Liste des éléments reconnus par ce module&amp;lt;/caption&amp;gt;&amp;#039;&lt;br /&gt;
    res = res .. &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Modèle&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Valeur modèle&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Valeur module&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- on fait d&amp;#039;abord les CURRENT&lt;br /&gt;
    for iii, code in ipairs(tbl) do&lt;br /&gt;
        -- table&lt;br /&gt;
        res = res .. &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;nowiki&amp;gt;{{CURRENT&amp;quot; .. code .. &amp;quot;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
        local tst = frame:preprocess(&amp;quot;{{CURRENT&amp;quot; .. code .. &amp;quot;}}&amp;quot;)&lt;br /&gt;
        if (mw.ustring.find(tst, &amp;quot;[[:Modèle:&amp;quot;, 1, true) ~= nil) then&lt;br /&gt;
            tst = &amp;quot;&amp;#039;&amp;#039;inexistant&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        res = res .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. tst .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
        -- on récupère le résultat&lt;br /&gt;
        local tmp = p.selecteur_date(frame, &amp;quot;CURRENT&amp;quot; .. code)&lt;br /&gt;
        res = res .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. tmp .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        -- la doc&lt;br /&gt;
        res = res .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. (p.access[code][4] or &amp;quot;-&amp;quot;) .. &amp;quot; (UTC)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    -- on fait ensuite les LOCAL&lt;br /&gt;
    for iii, code in ipairs(tbl) do&lt;br /&gt;
        -- table&lt;br /&gt;
        res = res .. &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;nowiki&amp;gt;{{LOCAL&amp;quot; .. code .. &amp;quot;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
        local tst = frame:preprocess(&amp;quot;{{LOCAL&amp;quot; .. code .. &amp;quot;}}&amp;quot;)&lt;br /&gt;
        if (mw.ustring.find(tst, &amp;quot;[[:Modèle:&amp;quot;, 1, true) ~= nil) then&lt;br /&gt;
            tst = &amp;quot;&amp;#039;&amp;#039;inexistant&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        res = res .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. tst .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
        -- on récupère le résultat&lt;br /&gt;
        local tmp = p.selecteur_date(frame, &amp;quot;LOCAL&amp;quot; .. code)&lt;br /&gt;
        res = res .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. tmp .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        -- la doc&lt;br /&gt;
        res = res .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. (p.access[code][4] or &amp;quot;-&amp;quot;) .. &amp;quot; (local)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- fin&lt;br /&gt;
    res = res .. &amp;quot;&amp;lt;/table&amp;gt;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    return frame:preprocess(res)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>module&gt;Hexasoft</name></author>
	</entry>
</feed>