<?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%2FJFG%2FLaunching</id>
	<title>Module:Sandbox/JFG/Launching - 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%2FJFG%2FLaunching"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/JFG/Launching&amp;action=history"/>
	<updated>2026-05-27T21:06:28Z</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/JFG/Launching&amp;diff=145571&amp;oldid=prev</id>
		<title>imported&gt;Pppery: Pppery moved page Module:Launching to Module:Sandbox/JFG/Launching without leaving a redirect: Procedural implementation of Wikipedia:Templates for discussion/Log/2017 January 15#Template:Launching; the template this module was used on was userfied, so the module it uses should be userfied too</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/JFG/Launching&amp;diff=145571&amp;oldid=prev"/>
		<updated>2019-11-05T01:13:33Z</updated>

		<summary type="html">&lt;p&gt;Pppery moved page &lt;a href=&quot;/index.php?title=Module:Launching&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:Launching (page does not exist)&quot;&gt;Module:Launching&lt;/a&gt; to &lt;a href=&quot;/research/Module:Sandbox/JFG/Launching&quot; title=&quot;Module:Sandbox/JFG/Launching&quot;&gt;Module:Sandbox/JFG/Launching&lt;/a&gt; without leaving a redirect: Procedural implementation of &lt;a href=&quot;https://en.wikipedia.org/wiki/Templates_for_discussion/Log/2017_January_15#Template:Launching&quot; class=&quot;extiw&quot; title=&quot;wikipedia:Templates for discussion/Log/2017 January 15&quot;&gt;Wikipedia:Templates for discussion/Log/2017 January 15#Template:Launching&lt;/a&gt;; the template this module was used on was userfied, so the module it uses should be userfied too&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- this module implements [[Template:Launching]]&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
	p.ShowTemplate = function(frame)&lt;br /&gt;
		local showtemp = frame.args[1]:upper()&lt;br /&gt;
		local namespace = frame.args[2]:upper()&lt;br /&gt;
		local forcedips = frame.args[3]:upper()&lt;br /&gt;
		&lt;br /&gt;
		if showtemp == &amp;quot;Y&amp;quot; or showtemp == &amp;quot;YES&amp;quot; then &lt;br /&gt;
			return true&lt;br /&gt;
		elseif forcedisp == &amp;quot;Y&amp;quot; or forcedisp == &amp;quot;YES&amp;quot; then&lt;br /&gt;
			return true&lt;br /&gt;
		elseif namespace == &amp;quot;&amp;quot; then&lt;br /&gt;
			return false&lt;br /&gt;
		else &lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.ShowDate = function(frame)   &lt;br /&gt;
		local Year = &amp;quot;&amp;quot;&lt;br /&gt;
		local Month = &amp;quot;&amp;quot;&lt;br /&gt;
		local Day = &amp;quot;&amp;quot;&lt;br /&gt;
		local Hour = &amp;quot;&amp;quot;&lt;br /&gt;
		local Minute = &amp;quot;&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		if frame.args[3] == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;in the near future&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			Year = frame.args[3]&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if frame.args[2] == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;in &amp;quot; .. Year&lt;br /&gt;
		else &lt;br /&gt;
			Month = p.MonthName(frame.args[2])&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if frame.args[1] == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;in &amp;quot; .. Month .. &amp;quot; &amp;quot; .. Year&lt;br /&gt;
		else &lt;br /&gt;
			Day = p.trim(frame.args[1])&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local LTime = &amp;quot;&amp;quot;    --Launch Time&lt;br /&gt;
		local ConvTime = &amp;quot;&amp;quot; --Converstion to local time&lt;br /&gt;
&lt;br /&gt;
		if frame.args[4]==&amp;quot;&amp;quot; or frame.args[5]==&amp;quot;&amp;quot; then&lt;br /&gt;
			lTime = &amp;quot;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			Hour = p.pad(frame.args[4])&lt;br /&gt;
			Minute = p.pad(frame.args[5])&lt;br /&gt;
&lt;br /&gt;
			LTime = Hour .. &amp;quot;:&amp;quot; .. Minute .. &amp;quot; [[Coordinated Universal Time|UTC]] on &amp;quot;&lt;br /&gt;
			ConvTime = p.ConvertTime(frame)&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local dateformat = frame.args[6]:lower()&lt;br /&gt;
	   &lt;br /&gt;
		--Display the date in the specified format&lt;br /&gt;
		local dString = &amp;quot;&amp;quot;&lt;br /&gt;
		local atLine = &amp;quot;&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		if LTime == &amp;quot;&amp;quot; then&lt;br /&gt;
			atLine = &amp;quot;on&amp;quot;&lt;br /&gt;
		else &lt;br /&gt;
			atLine = &amp;quot;at&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if dateformat == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
			dString = atLine .. &amp;quot; &amp;quot; .. LTime .. Month .. &amp;quot; &amp;quot; .. Day .. &amp;quot;, &amp;quot; .. Year .. ConvTime&lt;br /&gt;
		else&lt;br /&gt;
	   	  	dString = atLine .. &amp;quot; &amp;quot; .. LTime .. Day .. &amp;quot; &amp;quot; .. Month .. &amp;quot; &amp;quot; .. Year .. ConvTime&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
&lt;br /&gt;
		return dString --test&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	p.GetOffset = function(frame)&lt;br /&gt;
		local DateNow = os.time()&lt;br /&gt;
		local DateThen = p.GetDate(frame)&lt;br /&gt;
		&lt;br /&gt;
		return os.difftime(DateNow, DateThen)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	p.IsPassed = function(frame)&lt;br /&gt;
		local Offset = p.GetOffset(frame)&lt;br /&gt;
		&lt;br /&gt;
		if Offset &amp;gt; 0 then return true&lt;br /&gt;
		else return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.TimeToLaunch = function(frame)&lt;br /&gt;
		if frame.args[1] == &amp;quot;&amp;quot; then return &amp;quot;in the near future&amp;quot;&lt;br /&gt;
		elseif frame.args[2] == &amp;quot;&amp;quot; then return &amp;quot;in the near future&amp;quot;&lt;br /&gt;
		else &lt;br /&gt;
			local Offset = p.GetOffset(frame)&lt;br /&gt;
			&lt;br /&gt;
			local Min   = -60&lt;br /&gt;
			local Hour  = Min * 60&lt;br /&gt;
			local Day   = Hour * 24&lt;br /&gt;
			local Week  = Day * 7&lt;br /&gt;
			local FN    = Day * 14 --Fortnight&lt;br /&gt;
			&lt;br /&gt;
			local oMins  = tostring(math.ceil(Offset/Min))&lt;br /&gt;
			local oHours = tostring(math.ceil(Offset/Hour))&lt;br /&gt;
			local oDays  = tostring(math.ceil(Offset/Day))&lt;br /&gt;
			local oWeeks = tostring(math.ceil(Offset/Week))&lt;br /&gt;
			&lt;br /&gt;
			    if Offset &amp;gt;  0   then return &amp;quot;imminently or may already be in progress&amp;quot;&lt;br /&gt;
			elseif Offset &amp;gt; Min  then return &amp;quot;in the next minute&amp;quot;&lt;br /&gt;
			elseif Offset &amp;gt; Hour then return &amp;quot;in the next &amp;quot; .. oMins  .. &amp;quot; minutes&amp;quot;&lt;br /&gt;
			elseif Offset &amp;gt; Day  then return &amp;quot;in the next &amp;quot; .. oHours .. &amp;quot; hours&amp;quot;&lt;br /&gt;
			elseif Offset &amp;gt; FN   then return &amp;quot;in the next &amp;quot; .. oDays  .. &amp;quot; days&amp;quot;&lt;br /&gt;
			else                      return &amp;quot;in the next &amp;quot; .. oWeeks .. &amp;quot; weeks&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	p.GetDate = function(frame)&lt;br /&gt;
		local Year = 0&lt;br /&gt;
		local Month = 0&lt;br /&gt;
		local Day = 0&lt;br /&gt;
		local Hour = 0&lt;br /&gt;
		local Minute = 0&lt;br /&gt;
		&lt;br /&gt;
		if frame.args[3] == &amp;quot;&amp;quot; then&lt;br /&gt;
			Year = tonumber(os.date(&amp;quot;%Y&amp;quot;)) --Assumes current year&lt;br /&gt;
		else&lt;br /&gt;
			Year = tonumber(frame.args[3]) --Get value of year&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if frame.args[2] == &amp;quot;&amp;quot; then&lt;br /&gt;
			Month = 1&lt;br /&gt;
			Year = Year+1 --assume start of next year&lt;br /&gt;
		else&lt;br /&gt;
			Month = tonumber(frame.args[2])&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local mLen = p.MonthLength(Month, Year)&lt;br /&gt;
		&lt;br /&gt;
		if frame.args[3] == &amp;quot;&amp;quot; then&lt;br /&gt;
			Day = 1&lt;br /&gt;
			Month = Month+1&lt;br /&gt;
		else&lt;br /&gt;
			Day = tonumber(frame.args[1]) or 0&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if frame.args[4] == &amp;quot;&amp;quot; then&lt;br /&gt;
			Hour = 0&lt;br /&gt;
			Minute = 0&lt;br /&gt;
			Day = Day + 1 --use end of day, 23:59:59.99... ~ 00:00&lt;br /&gt;
		else&lt;br /&gt;
			Hour = tonumber(frame.args[4])&lt;br /&gt;
			Minute = tonumber(frame.args[5])&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if Day &amp;gt; mLen then&lt;br /&gt;
			Month = Month+1&lt;br /&gt;
			Day = 1&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if Month &amp;gt; 12 then&lt;br /&gt;
			Year = Year+1&lt;br /&gt;
			Month = 1&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local d = os.time{year=Year, month=Month, day=Day, hour=Hour, min=Minute}&lt;br /&gt;
		return d&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	p.MonthName =  function(IMonth) &lt;br /&gt;
		--Strip leading zeros&lt;br /&gt;
		local I = p.trim(IMonth)&lt;br /&gt;
		&lt;br /&gt;
		--For some reason lua has not switch/select case statement&lt;br /&gt;
			if I == &amp;quot;1&amp;quot;  then return &amp;quot;January&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;2&amp;quot;  then return &amp;quot;February&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;3&amp;quot;  then return &amp;quot;March&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;4&amp;quot;  then return &amp;quot;April&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;5&amp;quot;  then return &amp;quot;May&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;6&amp;quot;  then return &amp;quot;June&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;7&amp;quot;  then return &amp;quot;July&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;8&amp;quot;  then return &amp;quot;August&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;9&amp;quot;  then return &amp;quot;September&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;10&amp;quot; then return &amp;quot;October&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;11&amp;quot; then return &amp;quot;November&amp;quot;&lt;br /&gt;
		elseif I == &amp;quot;12&amp;quot; then return &amp;quot;December&amp;quot;&lt;br /&gt;
		else                  return IMonth&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	p.MonthLength =  function(I, IYear) --Returns number of days in a month&lt;br /&gt;
		local FebLen = 28&lt;br /&gt;
		if p.IsLeap(IYear) then &lt;br /&gt;
			FebLen = 29&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		--For some reason lua has not switch/select case statement&lt;br /&gt;
		    if I == 1  then return 31&lt;br /&gt;
		elseif I == 2  then return FebLen&lt;br /&gt;
		elseif I == 3  then return 31&lt;br /&gt;
		elseif I == 4  then return 30&lt;br /&gt;
		elseif I == 5  then return 31&lt;br /&gt;
		elseif I == 6  then return 30&lt;br /&gt;
		elseif I == 7  then return 31&lt;br /&gt;
		elseif I == 8  then return 31&lt;br /&gt;
		elseif I == 9  then return 30&lt;br /&gt;
		elseif I == 10 then return 31&lt;br /&gt;
		elseif I == 11 then return 30&lt;br /&gt;
		elseif I == 12 then return 31&lt;br /&gt;
		else                return 31&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.IsLeap = function(iYear) --Determines whether a year is a leap year or not&lt;br /&gt;
		    if math.fmod(iYear,400)==0 then return true&lt;br /&gt;
		elseif math.fmod(iYear,100)==0 then return false&lt;br /&gt;
		elseif math.fmod(iYear,  4)==0 then return true&lt;br /&gt;
		else                                return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.trim = function(s)&lt;br /&gt;
		--Removes leading zeroes from value&lt;br /&gt;
		if s:sub(1,1)==&amp;quot;0&amp;quot; then return s:sub(2)&lt;br /&gt;
		else return s&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.pad = function(s)&lt;br /&gt;
		local sLen = string.len(s)&lt;br /&gt;
		&lt;br /&gt;
		if sLen == 1 then return &amp;quot;0&amp;quot; .. s&lt;br /&gt;
		else return s&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	p.zonename = function(TimeZone)&lt;br /&gt;
		local t = TimeZone:upper()&lt;br /&gt;
		&lt;br /&gt;
		    if t == &amp;quot;UTC&amp;quot;  then return &amp;quot;[[Coordinated Universal Time|UTC]]&amp;quot;&lt;br /&gt;
		elseif t == &amp;quot;MHT&amp;quot;  then return &amp;quot;[[Marshall Islands|MHT]]&amp;quot; --Kwajalein&lt;br /&gt;
		elseif t == &amp;quot;YAKT&amp;quot; then return &amp;quot;[[Yakutsk Time]]&amp;quot; --Vostochny&lt;br /&gt;
		elseif t == &amp;quot;JST&amp;quot;  then return &amp;quot;[[Japan Standard Time|JST]]&amp;quot; --Uchinoura, Tanegashima&lt;br /&gt;
		elseif t == &amp;quot;KST&amp;quot;  then return &amp;quot;[[Korea Standard Time|KST]]&amp;quot; --Tonghae, Sohae, Naro&lt;br /&gt;
		elseif t == &amp;quot;CST&amp;quot;  then return &amp;quot;[[China Standard Time|CST]]&amp;quot; --Jiuquan, Taiyuan, Xichang&lt;br /&gt;
		elseif t == &amp;quot;AAST&amp;quot; then return &amp;quot;[[Time in Kazakhstan|Almaty Time]]&amp;quot; --Baikonur&lt;br /&gt;
		elseif t == &amp;quot;IST&amp;quot;  then return &amp;quot;[[Indian Standard Time|IST]]&amp;quot; --India&lt;br /&gt;
		elseif t == &amp;quot;YEKT&amp;quot; then return &amp;quot;[[Yekaterinburg Time]]&amp;quot; --Dombarovsky&lt;br /&gt;
		elseif t == &amp;quot;IRDT&amp;quot; then return &amp;quot;[[Iran Standard Time|IRDT]]&amp;quot; --Semnan (DST)&lt;br /&gt;
		elseif t == &amp;quot;IRST&amp;quot; then return &amp;quot;[[Iran Standard Time|IRST]]&amp;quot; --Semnan (Standard)&lt;br /&gt;
		elseif t == &amp;quot;MSK&amp;quot;  then return &amp;quot;[[Moscow Time]]&amp;quot; --Plesetsk&lt;br /&gt;
		elseif t == &amp;quot;ISDT&amp;quot; then return &amp;quot;[[Israel Standard Time|IDT]]&amp;quot; --Palmachim (DST)&lt;br /&gt;
		elseif t == &amp;quot;ISST&amp;quot; then return &amp;quot;[[Israel Standard Time|IST]]&amp;quot; --Palmachim (Standard)&lt;br /&gt;
		elseif t == &amp;quot;GFT&amp;quot;  then return &amp;quot;[[Time in France#Overseas Territories|GFT]]&amp;quot; --Kourou&lt;br /&gt;
		elseif t == &amp;quot;BRT&amp;quot;  then return &amp;quot;[[Time in Brasil|BRT]]&amp;quot; --Alcantara&lt;br /&gt;
		elseif t == &amp;quot;EDT&amp;quot;  then return &amp;quot;[[Eastern Time Zone|EDT]]&amp;quot; --Canaveral, Wallops/MARS (DST)&lt;br /&gt;
		elseif t == &amp;quot;EST&amp;quot;  then return &amp;quot;[[Eastern Time Zone|EST]]&amp;quot; --Canaveral, Wallops/MARS (Standard)&lt;br /&gt;
		elseif t == &amp;quot;PDT&amp;quot;  then return &amp;quot;[[Pacific Time Zone|PDT]]&amp;quot; --Vandenberg (DST)&lt;br /&gt;
		elseif t == &amp;quot;PST&amp;quot;  then return &amp;quot;[[Pacific Time Zone|PST]]&amp;quot; --Vandenberg (Standard)&lt;br /&gt;
		elseif t == &amp;quot;AKDT&amp;quot; then return &amp;quot;[[Alaska Time Zone|AKDT]]&amp;quot; --Kodiak (DST)&lt;br /&gt;
		elseif t == &amp;quot;AKST&amp;quot; then return &amp;quot;[[Alaska Time Zone|AKST]]&amp;quot; --Kodiak (Standard)&lt;br /&gt;
		elseif t == &amp;quot;HADT&amp;quot; then return &amp;quot;[[Hawaii–Aleutian Time Zone|AKDT]]&amp;quot; --Barking Sands (DST)&lt;br /&gt;
		elseif t == &amp;quot;HAST&amp;quot; then return &amp;quot;[[Hawaii–Aleutian Time Zone|AKST]]&amp;quot; --Barking Sands (Standard)&lt;br /&gt;
		elseif t == &amp;quot;SL&amp;quot;   then return &amp;quot;[[UTC-10]]&amp;quot; --Sea Launch&lt;br /&gt;
		else                    return TimeZone&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.bigoffset = function(TimeZone)&lt;br /&gt;
		local t = TimeZone:upper()&lt;br /&gt;
		&lt;br /&gt;
		    if t == &amp;quot;UTC&amp;quot;  then return  0&lt;br /&gt;
		elseif t == &amp;quot;MHT&amp;quot;  then return  12 --Kwajelein&lt;br /&gt;
		elseif t == &amp;quot;YAKT&amp;quot; then return  9 --Vostochny&lt;br /&gt;
		elseif t == &amp;quot;JST&amp;quot;  then return  9  --Uchinoura, Tanegashima&lt;br /&gt;
		elseif t == &amp;quot;KST&amp;quot;  then return  9  --Tonghae, Sohae, Naro&lt;br /&gt;
		elseif t == &amp;quot;CST&amp;quot;  then return  8  --Jiuquan, Taiyuan, Xichang&lt;br /&gt;
		elseif t == &amp;quot;AAST&amp;quot; then return  6  --Baikonur&lt;br /&gt;
		elseif t == &amp;quot;IST&amp;quot;  then return  5  --India&lt;br /&gt;
		elseif t == &amp;quot;YEKT&amp;quot; then return  5  --Dombarovsky&lt;br /&gt;
		elseif t == &amp;quot;IRDT&amp;quot; then return  4  --Semnan (DST)&lt;br /&gt;
		elseif t == &amp;quot;IRST&amp;quot; then return  3  --Semnan (Standard)&lt;br /&gt;
		elseif t == &amp;quot;MSK&amp;quot;  then return  3  --Plesetsk&lt;br /&gt;
		elseif t == &amp;quot;ISDT&amp;quot; then return  3  --Palmachim (DST)&lt;br /&gt;
		elseif t == &amp;quot;ISST&amp;quot; then return  2  --Palmachim (Standard)&lt;br /&gt;
		elseif t == &amp;quot;GFT&amp;quot;  then return -3  --Kourou&lt;br /&gt;
		elseif t == &amp;quot;BRT&amp;quot;  then return -3  --Alcantara&lt;br /&gt;
		elseif t == &amp;quot;EDT&amp;quot;  then return -4  --Canaveral, Wallops/MARS (DST)&lt;br /&gt;
		elseif t == &amp;quot;EST&amp;quot;  then return -5  --Canaveral, Wallops/MARS (Standard)&lt;br /&gt;
		elseif t == &amp;quot;PDT&amp;quot;  then return -7  --Vandenberg (DST)&lt;br /&gt;
		elseif t == &amp;quot;PST&amp;quot;  then return -8  --Vandenberg (Standard)&lt;br /&gt;
		elseif t == &amp;quot;AKDT&amp;quot; then return -8  --Kodiak (DST)&lt;br /&gt;
		elseif t == &amp;quot;AKST&amp;quot; then return -9  --Kodiak (Standard)&lt;br /&gt;
		elseif t == &amp;quot;HADT&amp;quot; then return -9  --Barking Sands (DST)&lt;br /&gt;
		elseif t == &amp;quot;HAST&amp;quot; then return -10 --Barking Sands (Standard)&lt;br /&gt;
		elseif t == &amp;quot;SL&amp;quot;   then return -10 --Sea Launch&lt;br /&gt;
		else                    return  0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.littleoffset = function(TimeZone)&lt;br /&gt;
		local t = TimeZone:upper()&lt;br /&gt;
		&lt;br /&gt;
		    if t == &amp;quot;UTC&amp;quot;  then return  0&lt;br /&gt;
		elseif t == &amp;quot;IST&amp;quot;  then return 30&lt;br /&gt;
		elseif t == &amp;quot;IRST&amp;quot; then return 30&lt;br /&gt;
		elseif t == &amp;quot;IRDT&amp;quot; then return 30&lt;br /&gt;
		else                    return 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	p.use12hc = function(TimeZone) --12 hour clock&lt;br /&gt;
		local t = TimeZone:upper()&lt;br /&gt;
		&lt;br /&gt;
		    if t == &amp;quot;UTC&amp;quot;  then return false&lt;br /&gt;
		elseif t == &amp;quot;MHT&amp;quot;  then return true --Kwajalein&lt;br /&gt;
		elseif t == &amp;quot;IST&amp;quot;  then return true --India&lt;br /&gt;
		elseif t == &amp;quot;EDT&amp;quot;  then return true --Canaveral, Wallops/MARS (DST)&lt;br /&gt;
		elseif t == &amp;quot;EST&amp;quot;  then return true --Canaveral, Wallops/MARS (Standard)&lt;br /&gt;
		elseif t == &amp;quot;PDT&amp;quot;  then return true --Vandenberg&lt;br /&gt;
		elseif t == &amp;quot;PST&amp;quot;  then return true --Vandenberg&lt;br /&gt;
		elseif t == &amp;quot;AKDT&amp;quot; then return true --Kodiak&lt;br /&gt;
		elseif t == &amp;quot;AKST&amp;quot; then return true --Kodiak&lt;br /&gt;
		elseif t == &amp;quot;HADT&amp;quot; then return true --Barking Sands&lt;br /&gt;
		elseif t == &amp;quot;HAST&amp;quot; then return true --Barking Sands&lt;br /&gt;
		else                   return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.ConvertTime = function(frame)&lt;br /&gt;
		local TimeZone = frame.args[7]&lt;br /&gt;
		local oLa = p.bigoffset(TimeZone)&lt;br /&gt;
		local oSm = p.littleoffset(TimeZone)&lt;br /&gt;
		local TName = p.zonename(TimeZone)&lt;br /&gt;
		local Use12HC = p.use12hc(TimeZone)&lt;br /&gt;
		&lt;br /&gt;
		if oLa==0 and oSm==0 then &lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			local Year = tonumber(frame.args[3]) --Get value of year&lt;br /&gt;
			local Month = tonumber(frame.args[2]) --Get value of month&lt;br /&gt;
			local Day = tonumber(frame.args[1]) --Get value of day&lt;br /&gt;
			local Hour = tonumber(frame.args[4]) --Get value of hour&lt;br /&gt;
			local Minute = tonumber(frame.args[5]) --Get value of minute&lt;br /&gt;
			&lt;br /&gt;
			local lMin = Minute + oSm&lt;br /&gt;
			local lHour = Hour + oLa&lt;br /&gt;
			local lDay = Day&lt;br /&gt;
			local lMonth = Month&lt;br /&gt;
			&lt;br /&gt;
			if lMin &amp;lt; 0 then &lt;br /&gt;
				lMin = lMin + 60&lt;br /&gt;
				lHour = lHour - 1&lt;br /&gt;
			elseif lMin &amp;gt; 59 then&lt;br /&gt;
				lMin = lMin - 60&lt;br /&gt;
				lHour = lHour + 1&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if lHour &amp;lt; 0 then &lt;br /&gt;
				lHour = lHour + 24&lt;br /&gt;
				lDay = lDay - 1&lt;br /&gt;
			elseif lHour &amp;gt; 23 then&lt;br /&gt;
				lHour = lHour - 24&lt;br /&gt;
				lDay = lDay + 1&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local ThisMonthLength = p.MonthLength(lMonth, Year)&lt;br /&gt;
			&lt;br /&gt;
			local LastMonthLength = 0&lt;br /&gt;
			if lMonth == 1 then &lt;br /&gt;
				LastMonthLength = 31&lt;br /&gt;
			else&lt;br /&gt;
				LastMonthLength = p.MonthLength(lMonth-1, Year)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if lDay &amp;lt; 1 then &lt;br /&gt;
				lDay = LastMonthLength&lt;br /&gt;
				lMonth = lMonth - 1&lt;br /&gt;
			elseif lDay &amp;gt; ThisMonthLength then&lt;br /&gt;
				lDay = 1&lt;br /&gt;
				lMonth = lMonth + 1&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if lMonth &amp;lt; 1 then &lt;br /&gt;
				lMonth = 12&lt;br /&gt;
			elseif lMonth &amp;gt; 12 then&lt;br /&gt;
				lMonth = 1&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local DayOffset = &amp;quot;&amp;quot;&lt;br /&gt;
			if lDay ~= Day then&lt;br /&gt;
				MyMonth = p.MonthName(tostring(lMonth))&lt;br /&gt;
&lt;br /&gt;
				local dateformat = frame.args[6]:lower()&lt;br /&gt;
				&lt;br /&gt;
				if dateformat == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
					DayOffset = &amp;quot; on &amp;quot; .. MyMonth .. &amp;quot; &amp;quot; .. tostring(lDay) --american format dates&lt;br /&gt;
				else 					&lt;br /&gt;
					DayOffset = &amp;quot; on &amp;quot; .. tostring(lDay) .. &amp;quot; &amp;quot; .. MyMonth --normal format dates&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			--handle am/pm&lt;br /&gt;
			local LocalTime = &amp;quot;&amp;quot;&lt;br /&gt;
			if Use12HC then&lt;br /&gt;
				local ap = &amp;quot; a.m.&amp;quot;&lt;br /&gt;
				if lHour == 12 then&lt;br /&gt;
					ap = &amp;quot; p.m.&amp;quot;&lt;br /&gt;
				elseif lHour == 0 then&lt;br /&gt;
					lHour = 12&lt;br /&gt;
				elseif lHour &amp;gt; 12 then&lt;br /&gt;
					lHour = lHour -12&lt;br /&gt;
					ap = &amp;quot; p.m.&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				LocalTime = tostring(lHour) .. &amp;quot;:&amp;quot; .. p.pad(tostring(lMin)) .. ap&lt;br /&gt;
			else&lt;br /&gt;
				LocalTime = p.pad(tostring(lHour)) .. &amp;quot;:&amp;quot; .. p.pad(tostring(lMin))&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local DispTime = LocalTime .. &amp;quot; &amp;quot; .. TName .. DayOffset&lt;br /&gt;
			return &amp;quot; (&amp;quot; .. DispTime .. &amp;quot;)&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Pppery</name></author>
	</entry>
</feed>