<?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%2FDixonD%2FDatetime</id>
	<title>Module:Sandbox/DixonD/Datetime - 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%2FDixonD%2FDatetime"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/DixonD/Datetime&amp;action=history"/>
	<updated>2026-05-26T13:28:37Z</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/DixonD/Datetime&amp;diff=145339&amp;oldid=prev</id>
		<title>imported&gt;DixonD at 07:20, 25 April 2013</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/DixonD/Datetime&amp;diff=145339&amp;oldid=prev"/>
		<updated>2013-04-25T07:20:48Z</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;local Error = require(&amp;#039;Module:Error&amp;#039;)&lt;br /&gt;
local this = {};&lt;br /&gt;
&lt;br /&gt;
this.calendars = {};&lt;br /&gt;
&lt;br /&gt;
function this.registerCalendar(moduleName, ...)&lt;br /&gt;
    moduleName = require(moduleName); --debug only: not lazily&lt;br /&gt;
    this.calendars[#(this.calendars)] = moduleName; --indexed by number, module loaded lazily&lt;br /&gt;
    for i = 1, arg.n do    &lt;br /&gt;
        this.calendars[arg[i]] = moduleName; -- indexed by code, module loaded lazily&lt;br /&gt;
    end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
this.registerCalendar(&amp;quot;Module:Sandbox/DixonD/Datetime/Gregorian&amp;quot;, &amp;quot;Gregorian&amp;quot;, &amp;quot;g&amp;quot;); --first position is the default&lt;br /&gt;
this.registerCalendar(&amp;quot;Module:Sandbox/DixonD/Datetime/Julian&amp;quot;,    &amp;quot;Julian&amp;quot;,    &amp;quot;j&amp;quot;);&lt;br /&gt;
-- more calendars may be added later in new modules pluggable here into this factory...&lt;br /&gt;
&lt;br /&gt;
function this.selectCalendar(index)&lt;br /&gt;
    if index == nil then&lt;br /&gt;
        index = 0; -- use the default calendar (Gregorian as set above)&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    local calendar = this.calendars[index];&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return index; -- fast path: assume that index is a calendar object (not indexed) already loaded&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    if type(calendar) == &amp;quot;string&amp;quot; then -- calendar is a string (i.e. a module name)&lt;br /&gt;
        local moduleName = calendar;&lt;br /&gt;
        calendar = require(moduleName); -- effective loading of calendar object&lt;br /&gt;
        if calendar == nil then&lt;br /&gt;
            return tostring(Error.error{&amp;quot;Calendar module name &amp;#039;&amp;#039;&amp;quot; .. moduleName .. &amp;quot;&amp;#039;&amp;#039; is either missing or cannot be loaded!&amp;quot;});&lt;br /&gt;
        end;&lt;br /&gt;
        -- replace the moduleName given ad value of any calendar key by the newly loaded calendar object&lt;br /&gt;
        for k, v in pairs(this.calendars) do&lt;br /&gt;
            if v == moduleName then&lt;br /&gt;
                this.calendars[k] = calendar;&lt;br /&gt;
            end;&lt;br /&gt;
        end;&lt;br /&gt;
    end; -- else assume calendar is a valid calendar object&lt;br /&gt;
&lt;br /&gt;
    return calendar;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
-- main functions&lt;br /&gt;
function this.julianDay(year, month, day, hour, minute, second, calendar)&lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.julianDay(year, month, day, hour, minute, second);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function this.dateOfJulianDay(julianDay, calendar)&lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.dateOfJulianDay(julianDay);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function this.yearOfJulianDay(julianDay, calendar)&lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.yearOfJulianDay(julianDay);&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
function this.monthOfJulianDay(julianDay, calendar)   &lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.monthOfJulianDay(julianDay);&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
function this.dayOfJulianDay(julianDay, calendar)   &lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.dayOfJulianDay(julianDay);&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
function this.weekdayOfJulianDay(julianDay, calendar)   &lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.weekdayOfJulianDay(julianDay);&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
function this.hourOfJulianDay(julianDay, calendar)   &lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.hourOfJulianDay(julianDay);&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
function this.minuteOfJulianDay(julianDay, calendar)   &lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.minuteOfJulianDay(julianDay);&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
function this.secondOfJulianDay(julianDay, calendar)   &lt;br /&gt;
    calendar = this.selectCalendar(calendar);&lt;br /&gt;
    if calendar == nil then&lt;br /&gt;
        return tostring(Error.error{&amp;quot;Calendar &amp;#039;&amp;#039;&amp;quot; .. calendar .. &amp;quot;&amp;#039;&amp;#039; is either missing or unknown!&amp;quot;});&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    return calendar.secondOfJulianDay(julianDay);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
return this;&lt;/div&gt;</summary>
		<author><name>imported&gt;DixonD</name></author>
	</entry>
</feed>