<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FSte1la%2FDates</id>
	<title>Module:Sandbox/Ste1la/Dates - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FSte1la%2FDates"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Ste1la/Dates&amp;action=history"/>
	<updated>2026-05-27T14:24:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/Ste1la/Dates&amp;diff=146224&amp;oldid=prev</id>
		<title>imported&gt;Ste1la at 21:51, 27 November 2018</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Ste1la/Dates&amp;diff=146224&amp;oldid=prev"/>
		<updated>2018-11-27T21:51:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Ste1la Google Code-in, Date formatting&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
p.formatDate = function(frame)&lt;br /&gt;
	local date = frame.args.date or &amp;quot;&amp;quot;&lt;br /&gt;
	local format = frame.args.format or &amp;quot;&amp;quot;&lt;br /&gt;
	local circa &lt;br /&gt;
	local epoca = nil&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	local monthList = {&amp;quot;jan&amp;quot;, &amp;quot;january&amp;quot;, &amp;quot;feb&amp;quot;, &amp;quot;february&amp;quot;, &amp;quot;feb&amp;quot;, &amp;quot;mar&amp;quot;, &amp;quot;march&amp;quot;,&lt;br /&gt;
		&amp;quot;apr&amp;quot;, &amp;quot;april&amp;quot;, &amp;quot;may&amp;quot;, &amp;quot;jun&amp;quot;, &amp;quot;june&amp;quot;, &amp;quot;jul&amp;quot;, &amp;quot;july&amp;quot;, &amp;quot;aug&amp;quot;, &amp;quot;august&amp;quot;, &lt;br /&gt;
		&amp;quot;sep&amp;quot;, &amp;quot;september&amp;quot;, &amp;quot;oct&amp;quot;, &amp;quot;october&amp;quot;, &amp;quot;nov&amp;quot;, &amp;quot;november&amp;quot;, &amp;quot;dec&amp;quot;, &amp;quot;december&amp;quot;}&lt;br /&gt;
	local obtain = 0&lt;br /&gt;
	&lt;br /&gt;
	--&amp;gt; extracting dates&lt;br /&gt;
	--check if is uncertain and if epoca exists&lt;br /&gt;
	--[[ = date:find(&amp;quot;uncertain&amp;quot;)&lt;br /&gt;
	if circa == nil then&lt;br /&gt;
		circa = date:find(&amp;quot;sometime&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if circa == nil then&lt;br /&gt;
		circa = date:find(&amp;quot;around&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if circa ~= nil then&lt;br /&gt;
		out = out .. &amp;quot;circa &amp;quot;&lt;br /&gt;
	end]]&lt;br /&gt;
	if date:find(&amp;quot;uncertain&amp;quot;) or date:find(&amp;quot;sometime&amp;quot;) or date:find(&amp;quot;around&amp;quot;) then&lt;br /&gt;
		out = out .. &amp;quot;circa &amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	epoca = date:find(&amp;quot;AD&amp;quot;)&lt;br /&gt;
    if epoca ~= nil then&lt;br /&gt;
		epoca = &amp;quot;AD&amp;quot;&lt;br /&gt;
	elseif epoca == nil then&lt;br /&gt;
    epoca = date:find(&amp;quot;BCE&amp;quot;)&lt;br /&gt;
    if epoca ~= nil then&lt;br /&gt;
      epoca = &amp;quot;BCE&amp;quot;&lt;br /&gt;
    elseif epoca == nil then&lt;br /&gt;
      epoca = date:find(&amp;quot;BC&amp;quot;)&lt;br /&gt;
      if epoca ~= nil then&lt;br /&gt;
        epoca = &amp;quot;BC&amp;quot;&lt;br /&gt;
      elseif epoca == nil then&lt;br /&gt;
          epoca = date:find(&amp;quot;CE&amp;quot;)&lt;br /&gt;
          if epoca ~= nil then&lt;br /&gt;
            epoca = &amp;quot;CE&amp;quot;&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
	--dmy&lt;br /&gt;
	local day, month, year = date:match(&amp;quot;(%d+) (%w+) (%d+)&amp;quot;)&lt;br /&gt;
	if day ~= nil and month ~= nil and year ~= nil then&lt;br /&gt;
		obtain = 1&lt;br /&gt;
		inputFormat = &amp;quot;dmy&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--mdy&lt;br /&gt;
	if obtain == 0 then&lt;br /&gt;
		month, day, year = date:match(&amp;quot;(%w+) (%d+), (%d+)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if day ~= nil and month ~= nil and year ~= nil then&lt;br /&gt;
			obtain = 1&lt;br /&gt;
			inputFormat = &amp;quot;mdy&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	--three number cases&lt;br /&gt;
	if obtain == 0 then&lt;br /&gt;
		day, month, year = date:match(&amp;quot;(%d+)/(%d+)/(%d+)&amp;quot;)&lt;br /&gt;
		if day ~= nil and month ~= nil and year ~= nil then&lt;br /&gt;
			obtain = 1&lt;br /&gt;
			inputFormat = &amp;quot;iso&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if obtain == 0 then&lt;br /&gt;
		day, month, year = date:match(&amp;quot;(%d+)-(%d+)-(%d+)&amp;quot;)&lt;br /&gt;
		if day ~= nil and month ~= nil and year ~= nil then&lt;br /&gt;
			obtain = 1&lt;br /&gt;
			inputFormat = &amp;quot;iso&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- not any above, gets two numbers and checks for month&lt;br /&gt;
	if obtain == 0 then&lt;br /&gt;
		local i, j = date:find(&amp;quot;%d+&amp;quot;)&lt;br /&gt;
		if i ~= nil then&lt;br /&gt;
			year = date:sub(i, j) or 0&lt;br /&gt;
			inputFormat = &amp;quot;year&amp;quot;&lt;br /&gt;
			if i ~= nil then&lt;br /&gt;
				i, j = date:find(&amp;quot;%d+&amp;quot;, j + 1)&lt;br /&gt;
				if i ~= nil then&lt;br /&gt;
					day = date:sub(i, j) or 0&lt;br /&gt;
					inputFormat = &amp;quot;day&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i = 1, 23 do&lt;br /&gt;
			local temp = date:lower()&lt;br /&gt;
			if temp:match(monthList[i]) ~= nil then&lt;br /&gt;
    			month = temp:match(monthList[i])&lt;br /&gt;
    			if inputFormat == &amp;quot;year&amp;quot; then&lt;br /&gt;
    				&lt;br /&gt;
    				inputFormat = &amp;quot;month and year&amp;quot;&lt;br /&gt;
    			elseif inputFormat == &amp;quot;day&amp;quot; then&lt;br /&gt;
    				inputFormat = &amp;quot;all&amp;quot;&lt;br /&gt;
    			end&lt;br /&gt;
    			&lt;br /&gt;
			end&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if month == nil then&lt;br /&gt;
			month = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if day == nil then&lt;br /&gt;
			day = 0&lt;br /&gt;
		end&lt;br /&gt;
		if year == nil then&lt;br /&gt;
			year = 0&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (day == &amp;quot;&amp;quot; or day == 0) and (year == &amp;quot;&amp;quot; or year == 0) then&lt;br /&gt;
		return &amp;quot;Invalid entry&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	if inputFormat == &amp;quot;day&amp;quot; then&lt;br /&gt;
      inputFormat = &amp;quot;year&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
	--converts month to number&lt;br /&gt;
	if tonumber(month) == nil then&lt;br /&gt;
		monthChange = 1&lt;br /&gt;
		month = month:lower()&lt;br /&gt;
		if month:match(&amp;quot;jan&amp;quot;) then&lt;br /&gt;
			month = 1&lt;br /&gt;
		elseif month:match(&amp;quot;feb&amp;quot;) then&lt;br /&gt;
			month = 2&lt;br /&gt;
		elseif month:match(&amp;quot;mar&amp;quot;) then&lt;br /&gt;
			month = 3&lt;br /&gt;
		elseif month:match(&amp;quot;apr&amp;quot;) then&lt;br /&gt;
			month = 4&lt;br /&gt;
		elseif month:match(&amp;quot;may&amp;quot;) then&lt;br /&gt;
			month = 5&lt;br /&gt;
		elseif month:match(&amp;quot;jun&amp;quot;) then&lt;br /&gt;
			month = 6&lt;br /&gt;
		elseif month:match(&amp;quot;jul&amp;quot;) then&lt;br /&gt;
			month = 7&lt;br /&gt;
		elseif month:match(&amp;quot;aug&amp;quot;) then&lt;br /&gt;
			month = 8&lt;br /&gt;
		elseif month:match(&amp;quot;sep&amp;quot;) then&lt;br /&gt;
			month = 9&lt;br /&gt;
		elseif month:match(&amp;quot;oct&amp;quot;) then&lt;br /&gt;
			month = 10&lt;br /&gt;
		elseif month:match(&amp;quot;nov&amp;quot;) then&lt;br /&gt;
			month = 11&lt;br /&gt;
		elseif month:match(&amp;quot;dec&amp;quot;) then&lt;br /&gt;
			month = 12&lt;br /&gt;
		else &lt;br /&gt;
			month = 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--&amp;gt;switches variables&lt;br /&gt;
	-- sets year&lt;br /&gt;
	day = tonumber(day)&lt;br /&gt;
	month = tonumber(month)&lt;br /&gt;
	if day &amp;gt; 31 then&lt;br /&gt;
	  local temp = year&lt;br /&gt;
	  year = day&lt;br /&gt;
	  day = temp&lt;br /&gt;
	elseif month &amp;gt; 31 then&lt;br /&gt;
	  local temp = year&lt;br /&gt;
	  year = month&lt;br /&gt;
	  month = temp&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if month &amp;gt; 12 then&lt;br /&gt;
	  local temp = day&lt;br /&gt;
	  day = month&lt;br /&gt;
	  month = temp&lt;br /&gt;
	end	&lt;br /&gt;
&lt;br /&gt;
	--checks leap year&lt;br /&gt;
	if month == 2 and day &amp;gt; 29 then&lt;br /&gt;
		return &amp;quot;Invalid entry&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if month == 2 and day == 29 then 	&lt;br /&gt;
		local leap = year % 4&lt;br /&gt;
		if leap ~= 0 then&lt;br /&gt;
			return &amp;quot;Invalid entry&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--OUTPUTS DATAAAAAAAAAAA!!!&lt;br /&gt;
	--&amp;gt;reformat data if necessary&lt;br /&gt;
	if format ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		inputFormat = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if format == &amp;quot;dmy&amp;quot; or format == &amp;quot;mdy&amp;quot; or format == &amp;quot;month and year&amp;quot; or &lt;br /&gt;
		inputFormat == &amp;quot;dmy&amp;quot; or inputFormat == &amp;quot;mdy&amp;quot; or inputFormat == &amp;quot;month and year&amp;quot; or&lt;br /&gt;
		inputFormat == &amp;quot;all&amp;quot; then&lt;br /&gt;
		if month == 1 then&lt;br /&gt;
			month = &amp;quot;January&amp;quot;&lt;br /&gt;
		elseif month == 2 then&lt;br /&gt;
			month = &amp;quot;February&amp;quot;&lt;br /&gt;
		elseif month == 3 then&lt;br /&gt;
			month = &amp;quot;March&amp;quot;	&lt;br /&gt;
		elseif month == 4 then&lt;br /&gt;
			month = &amp;quot;April&amp;quot;&lt;br /&gt;
		elseif month == 5 then&lt;br /&gt;
			month = &amp;quot;May&amp;quot;&lt;br /&gt;
		elseif month == 6 then&lt;br /&gt;
			month = &amp;quot;June&amp;quot;&lt;br /&gt;
		elseif month == 7 then&lt;br /&gt;
			month = &amp;quot;July&amp;quot;&lt;br /&gt;
		elseif month == 8 then&lt;br /&gt;
			month = &amp;quot;August&amp;quot;&lt;br /&gt;
		elseif month == 9 then&lt;br /&gt;
			month = &amp;quot;September&amp;quot;&lt;br /&gt;
		elseif month == 10 then&lt;br /&gt;
			month = &amp;quot;October&amp;quot;&lt;br /&gt;
		elseif month == 11 then&lt;br /&gt;
			month = &amp;quot;November&amp;quot;&lt;br /&gt;
		elseif month == 12 then&lt;br /&gt;
			month = &amp;quot;December&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if day == 0 then&lt;br /&gt;
		day = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if month == 0 then&lt;br /&gt;
		month = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if year == 0 then&lt;br /&gt;
		year = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	if format == &amp;quot;dmy&amp;quot; then&lt;br /&gt;
		if day &amp;lt; 31 and year &amp;lt; 31 and month == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;Invalid entry&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. day .. &amp;quot; &amp;quot; .. month .. &amp;quot; &amp;quot; .. year&lt;br /&gt;
	elseif format == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
		out = out .. month .. &amp;quot; &amp;quot; .. day .. &amp;quot;, &amp;quot; .. year&lt;br /&gt;
	elseif format == &amp;quot;iso&amp;quot; then&lt;br /&gt;
		if month &amp;lt; 10 then&lt;br /&gt;
			month = &amp;quot;0&amp;quot; .. month&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. year .. &amp;quot;-&amp;quot; .. month .. &amp;quot;-&amp;quot; .. day&lt;br /&gt;
	elseif format == &amp;quot;year&amp;quot; then&lt;br /&gt;
		out = out .. year&lt;br /&gt;
	elseif format == &amp;quot;month and year&amp;quot; then&lt;br /&gt;
		out = out .. month .. &amp;quot; &amp;quot; .. year&lt;br /&gt;
	elseif inputFormat == &amp;quot;dmy&amp;quot; then&lt;br /&gt;
		if tonumber(day) &amp;lt; 31 and tonumber(year) &amp;lt; 31 and month == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;Invalid entry&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. day .. &amp;quot; &amp;quot; .. month .. &amp;quot; &amp;quot; .. year	&lt;br /&gt;
	elseif inputFormat == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
		out = out .. month .. &amp;quot; &amp;quot; .. day .. &amp;quot;, &amp;quot; .. year&lt;br /&gt;
	elseif inputFormat == &amp;quot;iso&amp;quot; then&lt;br /&gt;
		if month &amp;lt; 10 then&lt;br /&gt;
			month = &amp;quot;0&amp;quot; .. month&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. year .. &amp;quot;-&amp;quot; .. month .. &amp;quot;-&amp;quot; .. day&lt;br /&gt;
	elseif inputFormat == &amp;quot;year&amp;quot; then&lt;br /&gt;
		out = out .. year&lt;br /&gt;
	elseif inputFormat == &amp;quot;month and year&amp;quot; then&lt;br /&gt;
		out = out .. year .. &amp;quot; &amp;quot; .. month&lt;br /&gt;
	else&lt;br /&gt;
		if day ~= &amp;quot;&amp;quot; or day ~= nil then&lt;br /&gt;
			out = out .. day .. &amp;quot; &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if month ~= &amp;quot;&amp;quot; or month ~= nil then&lt;br /&gt;
			out = out .. month .. &amp;quot; &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if year ~= &amp;quot;&amp;quot; or year ~= nil then&lt;br /&gt;
			out = out .. year&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if epoca ~= nil then&lt;br /&gt;
		out = out .. &amp;quot; &amp;quot; .. epoca&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return out .. &amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Ste1la</name></author>
	</entry>
</feed>