Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/Redlead07/Dates
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} function p.dmyformat(frame) local dmydate, format = frame.args.dmydate or "", frame.args.format or "" local a = string.match(dmydate, "(%d+) %w+ %d+") or string.match(dmydate, "(%w+) %d+, %d+") or string.match(dmydate, "(%w+) %d+ %d+") or string.match(dmydate, "(%d+)/%d+/%d+") or string.match(dmydate, "(%d+)-%d+-%d+") or string.match(dmydate, "(%d+)%w+ %w+ %d+") or string.match(dmydate, "(%w+) %d+") or string.match(dmydate, "(%d+) %w+") or string.match(dmydate, "(%d+) %d+") or string.match(dmydate, "(%w+)") or string.match(dmydate, "(%d+) %w+ %w+") or string.match(dmydate, "(%d+)%w+ %u%w+ %d+") or "" local b = string.match(dmydate, "%d+ (%w+) %d+") or string.match(dmydate, "%w+ (%d+), %d+") or string.match(dmydate, "%w+ (%d+) %d+") or string.match(dmydate, "%d+/(%d+)/%d+") or string.match(dmydate, "%d+-(%d+)-%d+") or string.match(dmydate, "%d+%w+ (%w+) %d+") or string.match(dmydate, "%w+ (%d+)") or string.match(dmydate, "%d+ (%w+)") or string.match(dmydate, "%d+ (%d+)") or string.match(dmydate, "%d+%w+ (%u)(%w+) %d+") or "" local c = string.match(dmydate, "%d+ %w+ (%d+)") or string.match(dmydate, "%d+ %d+ (%d+)") or string.match(dmydate, "%w+ %d+, (%d+)") or string.match(dmydate, "%d+/%d+/(%d+)") or string.match(dmydate, "%d+-%d+-(%d+)") or string.match(dmydate, "%w+ %d+ (%d+)") or string.match(dmydate, "%d+%w+ %w+ (%d+)") or string.match(dmydate, "%d+%w+ %u%w+ (%d+)") or "" local d = string.match(dmydate, "%d+ %w+ %d+ (%a+)") or "" local e = string.match(dmydate, "(%d+)-(%d+)-(%d+)") or "" local f = string.match(dmydate, "(%w+) (%d+), (%d+)") or "" local g = string.match(dmydate, "(%d+)/(%d+)/(%d+)") or "" local h = string.match(dmydate, "(%d+) (%w+) (%d+)") or "" local i = string.match(dmydate, "(%d+)") or "" local j = string.match(dmydate, "(%d+) (%w+)") or "" local k = string.match(dmydate, "(%d+) (%d+)") or "" local l = string.match(dmydate, "(%d+)(%w+) (%w+) (%d+)") or "" local m = string.match(dmydate, "(%d+) (%w+) (%d+) (%w+)") or "" local n = string.match(dmydate, "(%w+) (%w+) (%w+) (%w+)") or "" local o = string.match(dmydate, "(%d+)%w+ (%u)(%w+) (%d+)") or "" local p = string.match(dmydate, "(%d+)%U+(%a+)%D+(%d+)") or "" local a2 = tonumber(a) or 0 local a3 = string.find(a, "%d+") or "" local a4 = string.find(a, "%d?") or "" local a5 = string.find(a, "%a+") or "" local b2 = tonumber(b) or 0 local b3 = string.find(b, "%a+") or "" local c2 = tonumber(c) or 0 local c3 = string.find(a, "%d+") or "" local day = "" local month = "" local year = "" if i ~= "" and a2>0 and a2>31 then year = a2 end if a2>0 and a4 ~= "" then day = a2 end if a5 == "" then a5 = "" else month = a end if c2>0 and c2>31 and c3 ~= "" then year = c end if year == c and a2>0 and a4 ~= "" then day = a2 month = b end if year == a2 then month = b day = c end if day == a2 then month = b year = c end if month == a2 and c3 ~= "" then day = b year = c end if month == a2 and c == "" then year = b end if day == a2 and c == "" and a3 ~= "" then year = b end if e ~= "" then year = a2 month = b day = c end if f ~= "" then month = a day = b year = c end if g ~= "" then day = a2 month = b year = c end if k ~= "" then day = a year = b end if o ~= "" then day = a2 month = b year = c end if a2 ~= day and b ~= day and c ~= day then day = "" end if a2 ~= year and b ~= year and c ~= year then year = "" end local years = string.match(dmydate, "BCE") or string.match(dmydate, "BC") or string.match(dmydate, "CE") or string.match(dmydate, "AD") or "" if j ~= "" and c == "" and d == "" and years ~= "" then year = a2 years = b end local days = tonumber(day) or 0 year = tonumber(year) or 0 local mnthnumber = string.match(dmydate, "%d+/(%d+)/%d+") or string.match(dmydate, "%d+-(%d+)-%d+") mnthnumber = tonumber(mnthnumber) or 0 if mnthnumber ~= 0 then mnthname = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} month = mnthname[mnthnumber] end month = month:gsub("^%l", string.upper) local monthname = {Jan = "January", Feb = "February", Mar = "March", Apr = "April", May = "May", Jun = "June", Jul = "July", Aug = "August", Sep = "September", Oct = "October", Nov = "November", Dec = "December"} or "" local monthname2 = {January = "January", February = "February", March = "March", April = "April", May = "May", June = "June", July = "July", August = "August", September = "September", October = "October", November = "November", December = "December"} or "" local monthnum = {Jan = "01", Feb = "02", Mar = "03", Apr = "04", May = "05", Jun = "06", Jul = "07", Aug = "08", Sep = "09", Oct = "10", Nov = "11", Dec = "12"} local monthnum2 = {January = "01", February = "02", March = "03", April = "04", May = "05", June = "06", July = "07", August = "08", September = "09", October = "10", November = "11", December = "12"} or "" monthnumber = monthnum[(month)] or monthnum2[(month)] months = monthname[(month)] or monthname2[(month)] if month == "feb" and (year % 4 == 0) and (year % 100 ~= 0) or (year % 400) == 0 then days_in_month = 29 else days_in_month = 28 end if month == "February" and (year % 4 == 0) and (year % 100 ~= 0) or (year % 400) == 0 then days_in_month = 29 else days_in_month = 28 end if months == "jan" or months == "January" then days_in_month = 31 end if months == "mar" or months == "March" then days_in_month = 31 end if months == "apr" or months == "April" then days_in_month = 30 end if months == "may" or months == "May" then days_in_month = 31 end if months == "jun" or months == "June" then days_in_month = 30 end if months == "jul" or months == "July" then days_in_month = 31 end if months == "aug" or months == "August" then days_in_month = 31 end if months == "sep" or months == "September" then days_in_month = 30 end if months == "oct" or months == "October" then days_in_month = 31 end if months == "nov" or months == "November" then days_in_month = 30 end if months == "dec" or months == "December" then days_in_month = 31 end if format == "" and i ~= "" and j ~= "" and years ~= "" and m == "" then local no = string.format("%u %s", year, years) return no.."<br>" end if year ~= 0 and month ~= "" and days ~= 0 and years == "" and h ~= "" and j == "" and days<1 or days>days_in_month then return "Invalid entry".."<br>" end local circa = string.match(dmydate, "around") or string.match(dmydate, "sometime") or string.match(dmydate, "uncertain") or "" if p ~= "" and years == "" and circa == "" and m == "" and h == "" then d, m, y = string.match(dmydate, "(%d+)%U+(%a+)%D+(%d+)") return d.." "..m.." "..y.."<br>" end if circa == "" and m == "" and n ~= "" then return "Invalid entry".."<br>" end if circa == "" and h ~= "" and format == "" and m ~= "" and years == "" and o == "" then return "Invalid entry".."<br>" end if circa ~= "" and format == "" and h ~= "" then local no = string.format("%u %s %u", day, months, year) return "circa".." "..no.."<br>" end if circa ~= "" and format == "mdy" then local mdy = string.format("%s %u, %u", months, day, year) return "circa".." "..mdy.."<br>" end if circa ~= "" and format == "year" and format ~= "" then local y = string.format("%u", year) return "circa".." "..y.."<br>" end if circa ~= "" and format == "" and i ~= "" and l == "" then local no = string.format("%u", year) return "circa".." "..no.."<br>" end if circa ~="" and format == "" and l ~= "" then local no = string.format("%u %s %u", day, months, year) return "circa".." "..no.."<br>" end if format == "iso" then local iso = string.format("%u-%u-%u", year, monthnumber, day) return iso.."<br>" end if format == "mdy" then local mdy = string.format("%s %u, %u", months, day, year) return mdy.."<br>" end if format == "dmy" then local dmy = string.format("%u %s %u", day, months, year) return dmy.."<br>" end if format == "year" then local y = string.format("%u", year) return y.."<br>" end if format == "" and j ~= "" and c == "" and k == "" and a2<31 then local no = string.format("%u %s", day, months) return no.."<br>" end if format == "" and years ~= "" and m ~= "" then local no = string.format("%u %s %u %s", day, months, year, years) return no.."<br>" end if format == "" and i ~= "" and b == "" and c == "" and a2<31 then local no = string.format("%u", day) return no.."<br>" end if format == "" and i ~= "" and c == "" and b2 == 0 and a2<31 then local no = string.format("%u", day) return no.."<br>" end if format == "" and h ~= "" then local no = string.format("%u %s %u", day, months, year) return no.."<br>" end if format == "" and k ~= "" and c == "" then local no = string.format("%u", year) return no.."<br>" end if format == "" and a2>31 and i ~= "" and j~= "" then local no = string.format("%u", year) return no.."<br>" end if format == "" and c == "" and b == "" and a2>0 and a2>31 then local no = string.format("%u", year) return no.."<br>" end if format == "" and g ~= "" then local no = string.format("%u-%u-%u", year, monthnumber, day) return no.."<br>" end if format == "mdy" and e ~= "" then local mdy = string.format("%s %u, %u", months, day, year) return mdy.."<br>" end if format == "" and e ~= "" then local no = string.format("%u-%u-%u", year, monthnumber, day) return no.."<br>" end if format == "" and o ~= "" then local no = string.format("%u %s %u", day, months, year) return no.."<br>" end end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Sandbox/Redlead07/Dates/doc
(
edit
)