Module:Date

Èn årtike di Wikipedia.

La documentation pour ce module peut être créée à Module:Date/doc

-- Ci module ci c' est po les dates
local p = {}
local lang = mw.language.new("wa")

-- lang:formatDate dene ene sacwè come
-- 5 måss 2019, adon ki nos fåreut 5 di måss 2019
-- 1 måss 2019 → 1î di måss 2019
function p.get_corrected_date(datetime)
	local date = mw.text.split(lang:formatDate('j,n,F,Y', datetime, true), ',')
	local di = "di "
	local i = ""
	
	-- divant ene voyale
	if date[2] == "4" or date[2] == "8" or date[2] == "10" then
		di = "d' "	
	end
	
	if date[1] == "1" then
		i = "î"
	end
		
	
	return date[1]..i.." "..di..date[3].." "..date[4] 
end

-- formate ene date
-- @d string|table
-- @return nil|string date metowe e fôme
function p.formatDate(datetime)
	-- tåvlea d'ene dinêye wikidata d' on tipe time
	if type(datetime) == 'table' and
	   datetime.datatype ~= nil and
	   datetime.datatype == 'time' then 
	
		local time = datetime.datavalue.value.time
		local precision = datetime.datavalue.value.precision
	
		-- date ki cmince avou on - (moens)
		local BC = false
		if string.sub(time, 1, 1) == "-" then
			BC = true
			-- formatDate ni rote ki po les dates avou +
			time = '+' .. string.sub(time, 2)
		end
	
		-- seur pol sieke (e tchifes romins)
		if precision == 7 then
			--[[
			if BC then BC = ' div. JC' else BC = "" end
			local y = lang:formatDate('Y', time)
			y = p.lpad(tostring(math.ceil(tonumber(y)/100)), 4, '0')
			return lang:formatDate('xrY"vet kantved"', y) .. BC
			]]--
		-- seur po 10 ans
		-- 1899 → FLOOR(189.9) → 1890
		elseif precision == 8 then
			if BC then BC = '-' else BC = "" end
			local y = lang:formatDate('Y', time)
			return "diviè " .. BC .. tostring( math.floor(tonumber(y)/10) .. '0' )
			
		-- seur po l' anêye
		-- les dates sont dnêyes dizo l' fôme 2019-00-00T00:00:00Z
		-- li moes 00 est rcarculé come li moes 12 di l' anêye d' avant
		-- i fåt radjouter 1 an
		-- TODO ni rote nén avou 2019-01-01T00:00:00Z
		elseif precision == 9 then
			if BC then BC = '-' else BC = "" end
			local y = tonumber(lang:formatDate('Y', time)) -- po n' nén aveur des annêyes come 0629
			return BC .. tostring(y+1)
			
		-- seur pol moes
		-- les dates sont dnêyes dizo l' fôme 2019-03-00T00:00:00Z
		-- li djoû 00 est rcarculé come li moes 02 di l' anêye e rote
		-- et si l' moes est 01 adon come li moes 12 di l' anêye d' avant
		-- il fåt radjouter 1 djoû
		elseif precision == 10 then
			return lang:formatDate('F Y', time .. '+1 day')
			
		-- seur pol djoû
		elseif precision == 11 then
			return p.get_corrected_date(time)
			
		else
			return "?"
		end
	elseif type(datetime) == 'string' then
		return p.get_corrected_date(time)
	else
		return "?"
	end
end

-- dene li sieke sorlon l' anêye
-- 2021 → 21inme sieke
-- 100 → 2inme sieke
-- 9 → 1î sieke
function p.get_century(year)
	-- si ça vént d' on modele
	if year.args ~=nil and year.args[1] ~=nil then
		year = year.args[1]
	end

	ord = 'inme'
	BC = ' dv. Dj.-C.'
	year = tonumber(year)
	is_negative = (year < 0)
	century = math.floor(math.abs(year)/100)+1
	if(century == 1) then ord = 'î' end
	if(not is_negative) then BC = '' end
	return century .. ord .. ' sieke' .. BC
end

return p