Modul:Vorlage:FormatDateSimple
Die Dokumentation für dieses Modul kann unter Modul:Vorlage:FormatDateSimple/Doku erstellt werden
--[[ Modul für Hilfsfunktionen für Vorlage:FormatDateSimple ]] local p = { } function p.format(frame) --[[ Formatierung eines Datums. Wenn dieses im ISO-Format (YYYY-MM-DD) vorliegt, wird es im deutschen Langformat (z.B. "6. Dezember 2018") formatiert. Sonst wird der übergebene Wert unverändert zurückgegeben. Parameter: * Datum ]] local sDateRaw = frame.args[1] local tabMonate = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"} local sDateFormatted = sDateRaw -- Fallback local sYear, sMonth, sDay = mw.ustring.match(sDateRaw, "(%d%d%d%d)-(%d%d)-(%d%d)") if sYear ~= nil then -- Die folgende Prüfung ist etwas trickreich: -- Die Funktion os.time toleriert zwar zu große Angeben für month und day, -- diese überzähligen Einheiten werden aber aufaddiert, was dazu führt, -- dass das mittels os.date wieder ins ISO-Format rückkonvertierte Datum -- nicht gleich dem ursprünglichen Datum (Eingangsparameter) sein kann. local dtTest = os.time{year=sYear, month=sMonth, day=sDay} if os.date("%Y-%m-%d", dtTest) == sDateRaw then -- valid? sDateFormatted = tonumber(sDay) .. ". " .. tabMonate[tonumber(sMonth)] .. " " .. tonumber(sYear) end end return sDateFormatted end return p