Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch English

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus

Diese Vorlage dient der Konvertierung eines ausgeschriebenen Datums in das ISO-Format.

Vorlagenparameter

DatumDatum
1
Die Zeichenkette, welche das Datum darstellt.
Die Vorlage funktioniert mit jeder Zeichenkette, welche mit „1.“ bis „31.“ anfängt, mit „ 100“ bis „9999“ endet und irgendwo dazwischen einen ausgeschriebenen Monatsnamen enthält. Ein Test auf Gültigkeit des Datums erfolgt nicht.
Beispiel
13. Mai 2013

Diese Vorlage dient der Konvertierung eines ausgeschriebenen Datums in das ISO-Format.

Vorlagenparameter

Diese Vorlage bevorzugt Inline-Formatierung von Parametern.

ParameterBeschreibungTypStatus
DatumDatum 1

Die Zeichenkette, welche das Datum darstellt. Die Vorlage funktioniert mit jeder Zeichenkette, welche mit „1.“ bis „31.“ anfängt, mit „ 100“ bis „9999“ endet und irgendwo dazwischen einen ausgeschriebenen Monatsnamen enthält. Ein Test auf Gültigkeit des Datums erfolgt nicht.

Beispiel
13. Mai 2013
Datumerforderlich

Kopiervorlage

Bearbeiten
{{ISO-Datum|Datum=}}

Beispiele

Bearbeiten
{{ISO-Datum|Datum=3. Oktober 1990}}

ergibt: 1990-10-03

{{ISO-Datum|30. Februar 1990}}

ergibt: 1990-02-30


Lua

Verwendetes Modul: Vorlage:ISO-Datum


local ISO = {} 
    function exec(data)
        local isOk = false;
        local a = 0;
        local b = 0;
        local text = tostring(data);
        local   day = "";
        local month = "";
        local  year ="";
        local    s = ""
        local txty = "";
        local txtd = "";
        txty = string.sub(text,-4);
        a = tonumber(txty) or 0;
        year=string.format("%4.4d",a);
        if string.find(text,"Januar")        then month="-01";
        elseif string.find(text,"Jänner")    then month="-01";
        elseif string.find(text,"Februar")   then month="-02";
        elseif string.find(text,"März")      then month="-03";
        elseif string.find(text,"April")     then month="-04";
        elseif string.find(text,"Mai")       then month="-05";
        elseif string.find(text,"Juni")      then month="-06";
        elseif string.find(text,"Juli")      then month="-07";
        elseif string.find(text,"August")    then month="-08";
        elseif string.find(text,"September") then month="-09";
        elseif string.find(text,"Oktober")   then month="-10";
        elseif string.find(text,"November")  then month="-11";
        elseif string.find(text,"Dezember")  then month="-12";
        else month="-00";
        end
        txtd = string.sub(text,1,2);
        for idx = 1,9 do
            s = string.format("%s.",idx)
            if s == txtd then
                day = string.format("-%2.2d",idx);
                break;
            end
        end
        if day =="" then
            txtd = string.sub(text,1,3);
            for idx = 10,31 do
                s = string.format("%s.",idx)
                if s == txtd then
                    day = string.format("-%2.2d",idx);
                    break;
                end
            end
        end
        if day =="" then day = "-00"; end;
        s = year .. month .. day;
        return s;
    end

    function ISO.Run(frame)
        return  exec(frame.args[1])
     end

return ISO