Bearbeiten von „Modul:Vorlage:FormatDate

    Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

    Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

    Aktuelle Version Dein Text
    Zeile 1: Zeile 1:
    local p = {}
    local p = {}
    -- Trennen der Parameter
    -- Trennen der Parameter
    local function Split(str)
    local function Split(str)
    local Datum = {}
    local Datum = {}
    Zeile 24: Zeile 24:
    str = mw.ustring.sub(str,pos+1,  -1);
    str = mw.ustring.sub(str,pos+1,  -1);
    pos = mw.ustring.find(str,'-',1,true);
    pos = mw.ustring.find(str,'-',1,true);
    if not pos or pos == 0 then
    if not pos or pos == 0 then
    Datum.m = tonumber(str) or 0
    return true, Datum; -- Nur Jahr
    Datum.d = 0;
    return true, Datum;
    end
    end
    Teil  = mw.ustring.sub(str,1,pos-1)
    Teil  = mw.ustring.sub(str,1,pos-1)
    Datum.m = tonumber(Teil) or 0
    Datum.m = tonumber(Teil) or 0
    Teil  = mw.ustring.sub(str,pos+1,  -1)
    Teil  = mw.ustring.sub(str,pos+1,  -1)
    Datum.d = tonumber(Teil) or 0;
    if #Teil == 0 then
    return true, Datum;  -- Nur Jahr und Monat
    end
    if Datum.m == 0 then
    Datum.d = 0;
    else
    Datum.d = tonumber(Teil) or 0;
    end
    return true, Datum;
    return true, Datum;
    end
    end
    Zeile 61: Zeile 63:
    if Date.d > 31  then return false; end
    if Date.d > 31  then return false; end
    return true;
    return true;
    end
    --
    local function TageInMonate(Datum)
    Datum.m = 1;
    if Datum.d > 31 then -- nach Januar
    Datum.m = 2;
    Datum.d = Datum.d - 31;
    else
    return true, Datum;
    end
    if Datum.y % 4 == 0 then -- Die greg. Sonderregeln werden ignoriert.
    if Datum.d > 29 then  -- nach Februar (Schaltjahr)
    Datum.m = 3;
    Datum.d = Datum.d - 29;
    else
    return true, Datum;
    end
    else
    if Datum.d > 28 then  -- nach Februar (Normaljahr)
    Datum.m = 3;
    Datum.d = Datum.d - 28;
    else
    return true, Datum;
    end
    end
    if Datum.d > 31 then -- nach Maerz
    Datum.m = 4;
    Datum.d = Datum.d - 31;
    else
    return true, Datum;
    end
    if Datum.d > 30 then -- nach April
    Datum.m = 5;
    Datum.d = Datum.d - 30;
    else
    return true, Datum;
    end
    if Datum.d > 31 then -- nach Mai
    Datum.m = 6;
    Datum.d = Datum.d - 31;
    else
    return true, Datum;
    end
    if Datum.d > 30 then -- nach Juni
    Datum.m = 7;
    Datum.d = Datum.d - 30;
    else
    return true, Datum;
    end
    if Datum.d > 31 then -- nach Juli
    Datum.m = 8;
    Datum.d = Datum.d - 31;
    else
    return true, Datum;
    end
    if Datum.d > 31 then -- nach August
    Datum.m = 9;
    Datum.d = Datum.d - 31;
    else
    return true, Datum;
    end
    if Datum.d > 30 then -- nach September
    Datum.m = 10;
    Datum.d = Datum.d - 30;
    else
    return true, Datum;
    end
    if Datum.d > 31 then -- nach Oktober
    Datum.m = 11;
    Datum.d = Datum.d - 31;
    else
    return true, Datum;
    end
    if Datum.d > 30 then -- nach November
    Datum.m = 12;
    Datum.d = Datum.d - 30;
    else
    return true, Datum;
    end
    if Datum.d > 31 then -- nach Dezember = Fehler
    Datum.m = 0;
    Datum.d = 0;
    return false, Datum;
    else
    return true, Datum;
    end
    end
    end
    --
    --
    Zeile 164: Zeile 80:
    local VCHR = "";
    local VCHR = "";
    local STIL = 'L';
    local STIL = 'L';
    local IsOk = true;
    local IsOk = true
    local Tbl = {}
    local Tbl = {}
    local SortIt = false;
    local SortIt = false;
    Zeile 188: Zeile 104:
    return Text
    return Text
    end
    end
    --Tage ohne Monat: Tage in Monat und Tag umrechnen
    --Tag ohne Monat nicht erlaubt: Auch Tag auf Null setzen (= nur Jahr)
    if Tbl.m == 0 and Tbl.d ~= 0 then
    if Tbl.m == 0 then
    IsOk, Tbl = TageInMonate(Tbl)
    Tbl.d = 0;
    end
    if not  IsOk then
    Text = '<span class="error">[[Vorlage:FormatDate]]: Kein gültiges ISO-Datum!</span>'
    return Text
    end
    end
    Tbl.y = tonumber(Tbl.y) or 0;
    Tbl.y = tonumber(Tbl.y) or 0;
    Zeile 275: Zeile 187:
    end
    end
    --
    --
    local function GetYear(Args)
    local Tbl = {}
    local IsOk = true;
    local Year = 0;
    IsOk, Tbl = Split(Args[1])
    if not IsOk or Tbl.y  == 0 then
    Year = 0;
    return Year;
    end
    return Tbl.y;
    end
    local function CountDays(Args)
    local Tbl = {}
    local IsOk = true;
    local Days = 0;
    IsOk, Tbl = Split(Args[1])
    if not IsOk or Tbl.y  == 0 then
    Days = 0;
    return Days;
    end
    if Tbl.m == 0 or  Tbl.m == 1 then
    Days = Tbl.d;
    return Days;
    end
    if Tbl.m == 2 then
    Days = 31 + Tbl.d;
    return Days;
    end
    if Tbl.y % 4 == 0 then
    Days = 60
    else
    Days = 59;
    end
    if Tbl.m ==  3 then Days = Days + Tbl.d; end
    if Tbl.m ==  4 then Days = Days +  31 + Tbl.d; end
    if Tbl.m ==  5 then Days = Days +  61 + Tbl.d; end
    if Tbl.m ==  6 then Days = Days +  92 + Tbl.d; end
    if Tbl.m ==  7 then Days = Days + 122 + Tbl.d; end
    if Tbl.m ==  8 then Days = Days + 153 + Tbl.d; end
    if Tbl.m ==  9 then Days = Days + 184 + Tbl.d; end
    if Tbl.m == 10 then Days = Days + 214 + Tbl.d; end
    if Tbl.m == 11 then Days = Days + 245 + Tbl.d; end
    if Tbl.m == 12 then Days = Days + 275 + Tbl.d; end
    return Days;
    end


    function p.Execute(frame)
    function p.Execute(frame)
    local FR = frame:getParent()
    local FR = frame:getParent()
    if frame:callParserFunction('int', 'lang' ) == 'de-at' then
    FR.args['AT']='ja';
    end
    return Run(FR.args)
    return Run(FR.args)
    end
    end
    Zeile 337: Zeile 198:
    return Run(FR.args)
    return Run(FR.args)
    end
    end
    function p.DayInYear(frame)
    local FR = frame:getParent()
    local Number = CountDays(FR.args);
    return tostring(Number);
    end
    function p.YearFromISO(frame)
    local FR = frame:getParent()
    local Number = GetYear(FR.args);
    return tostring(Number);
    end
    return p
    return p
    Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
    Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Android Wiki-Beiträge automatisch unter der „Creative Commons Attribution/Share-Alike Lizenz 3.0“ stehen. Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

    Um das Wiki vor automatisiertem Bearbeitungsspam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:

    Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)
    Vorschau der Seite mit dieser Vorlage anzeigen

    Folgende Vorlagen werden auf dieser Seite verwendet: