From Wikipedia, the free encyclopedia

local p = {}



p.date_formatting = function( frame )

	-- Unpacking date

	local date = frame.args.date or "Invalid entry"

	local format = frame.args.format or ""

	months = {"January", "February", "March", "April", "May", "June", "July",

		"August", "September", "October", "November", "December",

		"January" = "01", "February" = "02", "March" = "03",

		"April" = "04", "May" = "05", "June" = "06", "July" = "07",

		"August" = "08", "September" = "09", "October" = "10",

		"November" = "11", "December" = "12"}

	local year, day = string.match(date, "%D*(%d*)%D*(%d*)%D*")

	local ans = ""

	if year ~= "" and day ~= "" then

		if tonumber(day) > 31 then

			if tonumber(year) <= 31 then

				day, year = year, day

			else

				ans = "Invalid entry"

			end

		end

	end

	local k = nil

	local month = ""

	for i = 1, #months do

		k = string.find(date, monthsi])

		if k == nil then

			k = string.find(date, string.lower(string.sub(monthsi], 1, 1)) .. string.sub(monthsi], 2))

		end

		if k == nil then

			k = string.find(date, string.lower(string.sub(monthsi], 1, 1)) .. string.sub(monthsi], 2, 3))

		end

		if k == nil then

			k = string.find(date, string.sub(monthsi], 1, 1) .. string.sub(monthsi], 2, 3))

		end

		if k ~= nil then

			month = monthsi

		end

	end

	if day ~= "" and year ~= "" and month == "" and string.find(date, "[-,/]") ~= nil then

		day, month, year = string.match(date, "(%d+)[-, /](%d+)[-, /](%d+)")

		right = {}

	for i = 1, 12 do

		if i == 2 then

			if year % 400 == 0 or (year % 100 ~= 0 and year % 4 == 0) then

				righti = 29

			else

				righti = 28

			end

		elseif i <= 7 then

			righti = 30 + i % 2

		else

			righti = 31 - i % 2

		end

	end

		local a, b, c = day, month, year

		if tonumber(a) > 31 then

			year = a

		elseif tonumber(b) > 31 then

			year = b

		elseif tonumber(c) > 31 then

			year = c

		end

		if tonumber(a) > 12 and year ~= nil and year ~= a then

			day = a

		elseif tonumber(b) > 12 and year ~= nil and year ~= b then

			day = b

		elseif tonumber(c) > 12 and year ~= nil and year ~= c then

			day = c

		end

		if (year == a and day == b) or (year == b and day == a) then

			month = monthstonumber(c)]

		elseif (year == b and day == c) or (year == c and day == b) then

			month = monthsa

		elseif (year == a and day == c) or (year == c and day == a) then

			month = monthstonumber(b)]

		else

			day, month, year = a, monthstonumber(b)], c

		end

		if rightmonthsmonth]] < day then

			if rightmonthstonumber(a)]] >= year then

				day, year = year, day

			else

				ans = "Invalid entry"

			end

		end

	end

        if month == "" and day == "" and year == "" then

		ans = "Invalid entry"

        else

	right = {}

	for i = 1, 12 do

		if i == 2 then

			if year % 400 == 0 or (year % 100 ~= 0 and year % 4 == 0) then

				righti = 29

			else

				righti = 28

			end

		elseif i <= 7 then

			righti = 30 + i % 2

		else

			righti = 31 - i % 2

		end

	end

	if righttonumber(monthsmonth])] ~= nil and day ~= "" then

		if righttonumber(monthsmonth])] < tonumber(day) then

			ans = "Invalid entry"

		end

        elseif month == "" and day ~= "" and year ~= "" and string.find(date, "%a") ~= nil then

                ans = "Invalid entry"

	end

        end

	--Formatting unpacked date

        local format_old = ""

        if day ~= "" and year ~= "" and month ~= "" then

                if string.find(date, ",") ~= nil then

                        format_old = "mdy"

                elseif string.find(date, "[-,/]") ~= nil then

                        format_old = "iso"

                else

                        format_old = "dmy"

                end

        elseif year ~= "" and month ~= "" then

                format_old = "month and year"

        else

                format_old = "year"

        end

	local u_date = ""

	local dop = ""

        if format == "" then

             format = format_old

end

	if ans ~= "Invalid entry" then

		if format == "mdy" then

			u_date = month .. " " .. day .. ", " .. year

		elseif format == "dmy" then

			u_date = day .. " " .. month .. " " .. year

		elseif format == "iso" then

			u_date = year .. "-" .. monthsmonth .. "-" .. day

		elseif format == "year" then

			u_date = year

		elseif format == "month and year" then

			u_date = month .. " " .. year

		else

			u_date = day .. " " .. month .. " " .. year

		end

		if string.find(date, "(uncertain)") ~= nil or string.find(date, "around") ~= nil then

			dop = "circa "

		end

	else 

		u_date = ans

	end

	return dop .. u_date

end

return p
From Wikipedia, the free encyclopedia

local p = {}



p.date_formatting = function( frame )

	-- Unpacking date

	local date = frame.args.date or "Invalid entry"

	local format = frame.args.format or ""

	months = {"January", "February", "March", "April", "May", "June", "July",

		"August", "September", "October", "November", "December",

		"January" = "01", "February" = "02", "March" = "03",

		"April" = "04", "May" = "05", "June" = "06", "July" = "07",

		"August" = "08", "September" = "09", "October" = "10",

		"November" = "11", "December" = "12"}

	local year, day = string.match(date, "%D*(%d*)%D*(%d*)%D*")

	local ans = ""

	if year ~= "" and day ~= "" then

		if tonumber(day) > 31 then

			if tonumber(year) <= 31 then

				day, year = year, day

			else

				ans = "Invalid entry"

			end

		end

	end

	local k = nil

	local month = ""

	for i = 1, #months do

		k = string.find(date, monthsi])

		if k == nil then

			k = string.find(date, string.lower(string.sub(monthsi], 1, 1)) .. string.sub(monthsi], 2))

		end

		if k == nil then

			k = string.find(date, string.lower(string.sub(monthsi], 1, 1)) .. string.sub(monthsi], 2, 3))

		end

		if k == nil then

			k = string.find(date, string.sub(monthsi], 1, 1) .. string.sub(monthsi], 2, 3))

		end

		if k ~= nil then

			month = monthsi

		end

	end

	if day ~= "" and year ~= "" and month == "" and string.find(date, "[-,/]") ~= nil then

		day, month, year = string.match(date, "(%d+)[-, /](%d+)[-, /](%d+)")

		right = {}

	for i = 1, 12 do

		if i == 2 then

			if year % 400 == 0 or (year % 100 ~= 0 and year % 4 == 0) then

				righti = 29

			else

				righti = 28

			end

		elseif i <= 7 then

			righti = 30 + i % 2

		else

			righti = 31 - i % 2

		end

	end

		local a, b, c = day, month, year

		if tonumber(a) > 31 then

			year = a

		elseif tonumber(b) > 31 then

			year = b

		elseif tonumber(c) > 31 then

			year = c

		end

		if tonumber(a) > 12 and year ~= nil and year ~= a then

			day = a

		elseif tonumber(b) > 12 and year ~= nil and year ~= b then

			day = b

		elseif tonumber(c) > 12 and year ~= nil and year ~= c then

			day = c

		end

		if (year == a and day == b) or (year == b and day == a) then

			month = monthstonumber(c)]

		elseif (year == b and day == c) or (year == c and day == b) then

			month = monthsa

		elseif (year == a and day == c) or (year == c and day == a) then

			month = monthstonumber(b)]

		else

			day, month, year = a, monthstonumber(b)], c

		end

		if rightmonthsmonth]] < day then

			if rightmonthstonumber(a)]] >= year then

				day, year = year, day

			else

				ans = "Invalid entry"

			end

		end

	end

        if month == "" and day == "" and year == "" then

		ans = "Invalid entry"

        else

	right = {}

	for i = 1, 12 do

		if i == 2 then

			if year % 400 == 0 or (year % 100 ~= 0 and year % 4 == 0) then

				righti = 29

			else

				righti = 28

			end

		elseif i <= 7 then

			righti = 30 + i % 2

		else

			righti = 31 - i % 2

		end

	end

	if righttonumber(monthsmonth])] ~= nil and day ~= "" then

		if righttonumber(monthsmonth])] < tonumber(day) then

			ans = "Invalid entry"

		end

        elseif month == "" and day ~= "" and year ~= "" and string.find(date, "%a") ~= nil then

                ans = "Invalid entry"

	end

        end

	--Formatting unpacked date

        local format_old = ""

        if day ~= "" and year ~= "" and month ~= "" then

                if string.find(date, ",") ~= nil then

                        format_old = "mdy"

                elseif string.find(date, "[-,/]") ~= nil then

                        format_old = "iso"

                else

                        format_old = "dmy"

                end

        elseif year ~= "" and month ~= "" then

                format_old = "month and year"

        else

                format_old = "year"

        end

	local u_date = ""

	local dop = ""

        if format == "" then

             format = format_old

end

	if ans ~= "Invalid entry" then

		if format == "mdy" then

			u_date = month .. " " .. day .. ", " .. year

		elseif format == "dmy" then

			u_date = day .. " " .. month .. " " .. year

		elseif format == "iso" then

			u_date = year .. "-" .. monthsmonth .. "-" .. day

		elseif format == "year" then

			u_date = year

		elseif format == "month and year" then

			u_date = month .. " " .. year

		else

			u_date = day .. " " .. month .. " " .. year

		end

		if string.find(date, "(uncertain)") ~= nil or string.find(date, "around") ~= nil then

			dop = "circa "

		end

	else 

		u_date = ans

	end

	return dop .. u_date

end

return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook