پودمان:Date category
توضیحات پودمان[ایجاد]
در صورت تمایل یک صفحهٔ توضیحات برای این پودمان اسکریبونتو ایجاد کنید. ویرایشگران میتوانند در صفحههای تمرین (ایجاد | آینه) و آزمایشی (ایجاد) این پودمان را آزمایش کنند. لطفاً ردهها را به زیرصفحهٔ /توضیحات بیافزایید. زیرصفحههای این پودمان. |
local p = {}
p.date = require("Module:Date")
p.gregorian_months = {"ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"}
p.solar_months = {"فروردین","خرداد","اردیبهشت","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"}
p.nums = {["۰"]="0",["۱"]="1",["۲"]="2",["۳"]="3",["۴"]="4",["۵"]="5",["۶"]="6",["۷"]="7",["۸"]="8",["۹"]="9"}
function p.convert_numbers_to_en(txt)
txt = tostring(txt)
for k, v in pairs(p.nums) do
txt = mw.ustring.gsub(txt,k,v)
end
return txt
end
function p.convert_numbers_to_fa(txt)
txt = tostring(txt)
for k, v in pairs(p.nums) do
txt = mw.ustring.gsub(txt,v,k)
end
return txt
end
function p.gregorian_day_month_year(frame)
local input = frame.args[1]
local out = ''
local xday, xmonth, xyear = input:match("(%S+) (%S+) (%S+)")
if xday ~= nil and xmonth ~= nil and xyear ~= nil then
xday = p.convert_numbers_to_en(xday)
xyear = p.convert_numbers_to_en(xyear)
if pcall(math.floor,xday) and pcall(math.floor,xyear) then
xday = math.floor(xday)
xyear = math.floor(xyear)
for i,mname in pairs(p.gregorian_months) do
if xmonth == mname then
xmonth = i
break
end
end
local data = {year = xyear, month = xmonth, day = xday, hour = 0, min = 0, sec = 0}
if pcall(os.time,data) and pcall(os.date,'%Y %m %d',timestamp) then
local timestamp = os.time(data)
local pdate = mw.text.split(os.date('%Y %m %d',timestamp-86400)," ")
local cdate = mw.text.split(os.date('%Y %m %d',timestamp)," ")
local ndate = mw.text.split(os.date('%Y %m %d',timestamp+86400)," ")
local pyear = math.floor(pdate[1])
local pmonth = math.floor(pdate[2])
local pday = math.floor(pdate[3])
pday = p.convert_numbers_to_fa(pday)
pmonth = p.gregorian_months[pmonth]
pyear = p.convert_numbers_to_fa(pyear)
local cyear = math.floor(cdate[1])
local cmonth = math.floor(cdate[2])
local cday = math.floor(cdate[3])
cday = p.convert_numbers_to_fa(cday)
cmonth = p.gregorian_months[cmonth]
cyear = p.convert_numbers_to_fa(cyear)
local nyear = math.floor(ndate[1])
local nmonth = math.floor(ndate[2])
local nday = math.floor(ndate[3])
nday = p.convert_numbers_to_fa(nday)
nmonth = p.gregorian_months[nmonth]
nyear = p.convert_numbers_to_fa(nyear)
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pday .. ' ' .. pmonth .. ' ' .. pyear .. '|→ ' .. pday .. ' ' .. pmonth .. ' ' .. pyear .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nday .. ' ' .. nmonth .. ' ' .. nyear .. '|' .. nday .. ' ' .. nmonth .. ' ' .. nyear .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:' .. cmonth .. ' ' .. cyear .. ']][[رده:' .. cday .. ' ' .. cmonth .. ']]'
end
end
end
return out
end
function p.gregorian_day_month(frame)
local input = frame.args[1]
local out = ''
local xday, xmonth = input:match("(%S+) (%S+)")
if xday ~= nil and xmonth ~= nil then
xday = p.convert_numbers_to_en(xday)
if pcall(math.floor,xday) then
xday = math.floor(xday)
for i,mname in pairs(p.gregorian_months) do
if xmonth == mname then
xmonth = i
break
end
end
local data = {year = 0, month = xmonth, day = xday, hour = 0, min = 0, sec = 0}
if pcall(os.time,data) and pcall(os.date,'%m %d',timestamp) then
local timestamp = os.time(data)
local pdate = mw.text.split(os.date('%m %d',timestamp-86400)," ")
local cdate = mw.text.split(os.date('%m %d',timestamp)," ")
local ndate = mw.text.split(os.date('%m %d',timestamp+86400)," ")
local pmonth = math.floor(pdate[1])
local pday = math.floor(pdate[2])
pday = p.convert_numbers_to_fa(pday)
pmonth = p.gregorian_months[pmonth]
local cmonth = math.floor(cdate[1])
local cday = math.floor(cdate[2])
cday = p.convert_numbers_to_fa(cday)
cmonth = p.gregorian_months[cmonth]
local nmonth = math.floor(ndate[1])
local nday = math.floor(ndate[2])
nday = p.convert_numbers_to_fa(nday)
nmonth = p.gregorian_months[nmonth]
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pday .. ' ' .. pmonth .. '|→ ' .. pday .. ' ' .. pmonth .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nday .. ' ' .. nmonth .. '|' .. nday .. ' ' .. nmonth .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:' .. cmonth .. ']]'
end
end
end
return out
end
function p.gregorian_month_year(frame)
local input = frame.args[1]
local out = ''
local xmonth, xyear = input:match("(%S+) (%S+)")
if xmonth ~= nil and xyear ~= nil then
xyear = p.convert_numbers_to_en(xyear)
if pcall(math.floor,xyear) then
xyear = math.floor(xyear)
for i,mname in pairs(p.gregorian_months) do
if xmonth == mname then
xmonth = i
break
end
end
local data = {year = xyear, month = xmonth, day = 15, hour = 0, min = 0, sec = 0}
if pcall(os.time,data) and pcall(os.date,'%Y %m',timestamp) then
local timestamp = os.time(data)
local pdate = mw.text.split(os.date('%Y %m',timestamp-2592000)," ")
local cdate = mw.text.split(os.date('%Y %m',timestamp)," ")
local ndate = mw.text.split(os.date('%Y %m',timestamp+2592000)," ")
local pyear = math.floor(pdate[1])
local pmonth = math.floor(pdate[2])
pmonth = p.gregorian_months[pmonth]
pyear = p.convert_numbers_to_fa(pyear)
local cyear = math.floor(cdate[1])
local cmonth = math.floor(cdate[2])
cmonth = p.gregorian_months[cmonth]
cyear = p.convert_numbers_to_fa(cyear)
local nyear = math.floor(ndate[1])
local nmonth = math.floor(ndate[2])
nmonth = p.gregorian_months[nmonth]
nyear = p.convert_numbers_to_fa(nyear)
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pmonth .. ' ' .. pyear .. '|→ ' .. pmonth .. ' ' .. pyear .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nmonth .. ' ' .. nyear .. '|' .. nmonth .. ' ' .. nyear .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:' .. cmonth .. ']][[رده:' .. cyear .. ']]'
end
end
end
return out
end
function p.solar_day_month_year(frame)
local input = frame.args[1]
local out = ''
local xday, xmonth, xyear = input:match("(%S+) (%S+) (%S+)")
if xday ~= nil and xmonth ~= nil and xyear ~= nil then
xday = p.convert_numbers_to_en(xday)
xyear = p.convert_numbers_to_en(xyear)
if pcall(math.floor,xday) and pcall(math.floor,xyear) then
xday = math.floor(xday)
xyear = math.floor(xyear)
for i,mname in pairs(p.solar_months) do
if xmonth == mname then
xmonth = i
break
end
end
local res = p.date.solar_to_gregorian({xyear,xmonth,xday})
local data = {year = res[1], month = res[2], day = res[3], hour = 0, min = 0, sec = 0}
if pcall(os.time,data) and pcall(os.date,'%Y %m %d',timestamp) then
local timestamp = os.time(data)
local pdate = mw.text.split(os.date('%Y %m %d',timestamp-86400)," ")
local cdate = mw.text.split(os.date('%Y %m %d',timestamp)," ")
local ndate = mw.text.split(os.date('%Y %m %d',timestamp+86400)," ")
pdate = p.date.gregorian_to_solar(math.floor(pdate[1]),math.floor(pdate[2]),math.floor(pdate[3]))
local pyear = pdate[1]
local pmonth = pdate[2]
local pday = pdate[3]
pday = p.convert_numbers_to_fa(pday)
pmonth = p.solar_months[pmonth]
pyear = p.convert_numbers_to_fa(pyear)
cdate = p.date.gregorian_to_solar(math.floor(cdate[1]),math.floor(cdate[2]),math.floor(cdate[3]))
local cyear = cdate[1]
local cmonth = cdate[2]
local cday = cdate[3]
cday = p.convert_numbers_to_fa(cday)
cmonth = p.solar_months[cmonth]
cyear = p.convert_numbers_to_fa(cyear)
ndate = p.date.gregorian_to_solar(math.floor(ndate[1]),math.floor(ndate[2]),math.floor(ndate[3]))
local nyear = ndate[1]
local nmonth = ndate[2]
local nday = ndate[3]
nday = p.convert_numbers_to_fa(nday)
nmonth = p.solar_months[nmonth]
nyear = p.convert_numbers_to_fa(nyear)
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pday .. ' ' .. pmonth .. ' ' .. pyear .. '|→ ' .. pday .. ' ' .. pmonth .. ' ' .. pyear .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nday .. ' ' .. nmonth .. ' ' .. nyear .. '|' .. nday .. ' ' .. nmonth .. ' ' .. nyear .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:' .. cmonth .. ' ' .. cyear .. ']][[رده:' .. cday .. ' ' .. cmonth .. ']]'
end
end
end
return out
end
function p.solar_day_month(frame)
local input = frame.args[1]
local out = ''
local xday, xmonth = input:match("(%S+) (%S+)")
if xday ~= nil and xmonth ~= nil then
xday = p.convert_numbers_to_en(xday)
if pcall(math.floor,xday) then
xday = math.floor(xday)
for i,mname in pairs(p.solar_months) do
if xmonth == mname then
xmonth = i
break
end
end
local res = p.date.solar_to_gregorian({979,xmonth,xday})
local data = {year = res[1], month = res[2], day = res[3], hour = 0, min = 0, sec = 0}
if pcall(os.time,data) and pcall(os.date,'%Y %m %d',timestamp) then
local timestamp = os.time(data)
local pdate = mw.text.split(os.date('%Y %m %d',timestamp-86400)," ")
local cdate = mw.text.split(os.date('%Y %m %d',timestamp)," ")
local ndate = mw.text.split(os.date('%Y %m %d',timestamp+86400)," ")
pdate = p.date.gregorian_to_solar(math.floor(pdate[1]),math.floor(pdate[2]),math.floor(pdate[3]))
local pyear = pdate[1]
local pmonth = pdate[2]
local pday = pdate[3]
pday = p.convert_numbers_to_fa(pday)
pmonth = p.solar_months[pmonth]
pyear = p.convert_numbers_to_fa(pyear)
cdate = p.date.gregorian_to_solar(math.floor(cdate[1]),math.floor(cdate[2]),math.floor(cdate[3]))
local cyear = cdate[1]
local cmonth = cdate[2]
local cday = cdate[3]
cday = p.convert_numbers_to_fa(cday)
cmonth = p.solar_months[cmonth]
cyear = p.convert_numbers_to_fa(cyear)
ndate = p.date.gregorian_to_solar(math.floor(ndate[1]),math.floor(ndate[2]),math.floor(ndate[3]))
local nyear = ndate[1]
local nmonth = ndate[2]
local nday = ndate[3]
nday = p.convert_numbers_to_fa(nday)
nmonth = p.solar_months[nmonth]
nyear = p.convert_numbers_to_fa(nyear)
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pday .. ' ' .. pmonth .. '|→ ' .. pday .. ' ' .. pmonth .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nday .. ' ' .. nmonth .. '|' .. nday .. ' ' .. nmonth .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:' .. cmonth .. ']]'
end
end
end
return out
end
function p.solar_month_year(frame)
local input = frame.args[1]
local out = ''
local xmonth, xyear = input:match("(%S+) (%S+)")
if xmonth ~= nil and xyear ~= nil then
xyear = p.convert_numbers_to_en(xyear)
if pcall(math.floor,xyear) then
xyear = math.floor(xyear)
for i,mname in pairs(p.solar_months) do
if xmonth == mname then
xmonth = i
break
end
end
local res = p.date.solar_to_gregorian({xyear,xmonth,15})
local data = {year = res[1], month = res[2], day = res[3], hour = 0, min = 0, sec = 0}
if pcall(os.time,data) and pcall(os.date,'%Y %m %d',timestamp) then
local timestamp = os.time(data)
local pdate = mw.text.split(os.date('%Y %m %d',timestamp-2592000)," ")
local cdate = mw.text.split(os.date('%Y %m %d',timestamp)," ")
local ndate = mw.text.split(os.date('%Y %m %d',timestamp+2592000)," ")
pdate = p.date.gregorian_to_solar(math.floor(pdate[1]),math.floor(pdate[2]),math.floor(pdate[3]))
local pyear = pdate[1]
local pmonth = pdate[2]
local pday = pdate[3]
pday = p.convert_numbers_to_fa(pday)
pmonth = p.solar_months[pmonth]
pyear = p.convert_numbers_to_fa(pyear)
cdate = p.date.gregorian_to_solar(math.floor(cdate[1]),math.floor(cdate[2]),math.floor(cdate[3]))
local cyear = cdate[1]
local cmonth = cdate[2]
local cday = cdate[3]
cday = p.convert_numbers_to_fa(cday)
cmonth = p.solar_months[cmonth]
cyear = p.convert_numbers_to_fa(cyear)
ndate = p.date.gregorian_to_solar(math.floor(ndate[1]),math.floor(ndate[2]),math.floor(ndate[3]))
local nyear = ndate[1]
local nmonth = ndate[2]
local nday = ndate[3]
nday = p.convert_numbers_to_fa(nday)
nmonth = p.solar_months[nmonth]
nyear = p.convert_numbers_to_fa(nyear)
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pmonth .. ' ' .. pyear .. '|→ ' .. pmonth .. ' ' .. pyear .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nmonth .. ' ' .. nyear .. '|' .. nmonth .. ' ' .. nyear .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:' .. cmonth .. ']][[رده:' .. cyear .. ']]'
end
end
end
return out
end
function p.solar_month(frame)
local xmonth = frame.args[1]
for i,mname in pairs(p.solar_months) do
if xmonth == mname then
xmonth = i
break
end
end
xmonth = xmonth - 1
local pmonth = p.solar_months[((xmonth - 1) % 12) + 1]
local nmonth = p.solar_months[((xmonth + 1) % 12) + 1]
local out = ''
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pmonth .. '|→ ' .. pmonth .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nmonth .. '|' .. nmonth .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:اخبار بر پایه تاریخ خورشیدی]]'
return out
end
function p.gregorian_month(frame)
local xmonth = frame.args[1]
for i,mname in pairs(p.gregorian_months) do
if xmonth == mname then
xmonth = i
break
end
end
xmonth = xmonth - 1
local pmonth = p.gregorian_months[((xmonth - 1) % 12) + 1]
local nmonth = p.gregorian_months[((xmonth + 1) % 12) + 1]
local out = ''
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pmonth .. '|→ ' .. pmonth .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nmonth .. '|' .. nmonth .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:اخبار بر پایه تاریخ میلادی]]'
return out
end
function p.solar_year(frame)
local xyear = math.floor(p.convert_numbers_to_en(frame.args[1]))
local pyear = p.convert_numbers_to_fa(xyear - 1)
local nyear = p.convert_numbers_to_fa(xyear + 1)
local out = ''
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pyear .. '|→ ' .. pyear .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nyear .. '|' .. nyear .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:اخبار بر پایه تاریخ]]'
return out
end
function p.gregorian_year(frame)
local xyear = math.floor(p.convert_numbers_to_en(frame.args[1]))
local pyear = p.convert_numbers_to_fa(xyear - 1)
local nyear = p.convert_numbers_to_fa(xyear + 1)
local out = ''
out = out .. '<div style="background-color: #e1f1f5; padding: 5px; width: 95%; border-radius: 10px; border: 1px solid #eddddd; margin-right: auto; margin-left: auto;"><table style="width: 100%;"><tr>'
out = out .. '<td style="text-align: right;">'
out = out .. '[[:رده:' .. pyear .. '|→ ' .. pyear .. ']]'
out = out .. '</td>'
out = out .. '<td style="text-align: left;">'
out = out .. '[[:رده:' .. nyear .. '|' .. nyear .. ' ←]]'
out = out .. '</td>'
out = out .. '</tr></table></div>'
out = out .. '[[رده:اخبار بر پایه تاریخ]]'
return out
end
return p