请输入您要查询的百科知识:

 

词条 Module:Sandbox/Angr pukhlya/2/sandbox
释义

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, months[i])

if k == nil then

k = string.find(date, string.lower(string.sub(months[i], 1, 1)) .. string.sub(months[i], 2))

end

if k == nil then

k = string.find(date, string.lower(string.sub(months[i], 1, 1)) .. string.sub(months[i], 2, 3))

end

if k == nil then

k = string.find(date, string.sub(months[i], 1, 1) .. string.sub(months[i], 2, 3))

end

if k ~= nil then

month = months[i]

end

end

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

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

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 = months[tonumber(c)]

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

month = months[a]

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

month = months[tonumber(b)]

else

day, month, year = a, months[tonumber(b)], c

end

end

right = {}

for i = 1, 12 do

if i == 2 then

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

right[i] = 29

else

right[i] = 28

end

elseif i <= 7 then

right[i] = 30 + i % 2

else

right[i] = 31 - i % 2

end

end

if right[months[i]] < day then

ans = "Invalid entry"

end

--Formatting unpacked date

local u_date = ""

local dop = ""

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 .. "-" .. months[month] .. "-" .. 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

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/11 10:51:52