Modul:LinkSubformDatum

Version vom 29. Dezember 2025, 08:59 Uhr von HeikoBot (Diskussion | Beiträge) (switch kal.month_names[] / kal.month_numbers[] von Modul:Kalender)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Dieses Modul befasst sich mit Datumskonversionen bei Subformularen, wenn also Subobjekte abgebildet werden sollen. Es geht um die Konvertierung der Datumsformate, wie sie auch bei normalen Formularen stattfinden.

GetMonthday

Konvertiert ein Formular-Datum wie 2025/01/08 zu 8. Januar. Ist das Format Oktober 2022 kommt Oktober raus.

GetYear

Konvertiert ein Formular-Datum wie 2025/01/08 zu 2025. Es versteht aber auch das Datumsformat Oktober 2022



local p = {}

local com = require( "Module:Common" )
local str = require("Modul:String")
local kal = require("Modul:Kalender")

function p.GetMonthday(frame)
	-- #invoke wrapper
	return p.getMonthday(frame.args[1])
end

function p.getMonthday(date)
	local date_array = str.split(date, "/")
	if com.isEmpty(date_array[2]) then
		-- When datestring contained no "/"
		local mda = str.split(date_array[1])
		if com.isEmpty(mda[2]) then
			-- When dateformat is just YYYY
			return ""
		else
			-- Dateformat is <monthname> YYYY
			return mda[1]
		end
	else
		mn = kal.month_names[tonumber(date_array[2])]
		date_array[3] = date_array[3]:gsub('0*', '', 1)
		return date_array[3]:gsub("%s+", "") .. ". " .. mn
	end
end

function p.GetYear(frame)
	-- #invoke wrapper
	return p.getYear(frame.args[1])
end

function p.getYear(date)
	local date_array=str.split(date, "/")
	if com.isEmpty(date_array[2]) then
		-- When datestring contained no "/"
		local mda = str.split(date_array[1])
		if com.isEmpty(mda[2]) then
			-- When dateformat is just YYYY
			return mda[1]
		else
			-- Dateformat is <monthname> YYYY
			return mda[2]
		end
	elseif com.isEmpty(date_array[3]) then
		-- Datestring contained one "/"
		return date_array[1]
	else
		-- Dateformat should be YYYY/MM/DD
		return date_array[1]
	end
end

return p