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: