<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://www.iran-pedia.org/w/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3AIranian_calendar%2Flibrary</id>
	<title>پودمان:Iranian calendar/library - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://www.iran-pedia.org/w/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3AIranian_calendar%2Flibrary"/>
	<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Iranian_calendar/library&amp;action=history"/>
	<updated>2026-04-29T01:06:31Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://www.iran-pedia.org/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Iranian_calendar/library&amp;diff=4361&amp;oldid=prev</id>
		<title>Mahan: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Iranian_calendar/library&amp;diff=4361&amp;oldid=prev"/>
		<updated>2017-12-05T06:59:44Z</updated>

		<summary type="html">&lt;p&gt;۱ نسخه واردشده&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fa&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;نسخهٔ ‏۵ دسامبر ۲۰۱۷، ساعت ۰۸:۵۹&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;fa&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(بدون تفاوت)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key fairanpediadb-fa_:diff:1.41:old-4360:rev-4361 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mahan</name></author>
	</entry>
	<entry>
		<id>https://www.iran-pedia.org/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Iranian_calendar/library&amp;diff=4360&amp;oldid=prev</id>
		<title>Mahan در ‏۴ سپتامبر ۲۰۱۴، ساعت ۱۵:۴۵</title>
		<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Iranian_calendar/library&amp;diff=4360&amp;oldid=prev"/>
		<updated>2014-09-04T15:45:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module is under development.&lt;br /&gt;
&lt;br /&gt;
-- A library of Iranian calendar functions&lt;br /&gt;
-- Written and bringing more features by Alireza Eskandarpour Shoferi (@AEsShoferi) in Lua&lt;br /&gt;
-- Based on JalaliJSCalendar (by Ali Farhadi)&lt;br /&gt;
--&lt;br /&gt;
-- Distributed under the terms of the CC BY-SA 4.0&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local daysMonth = {&lt;br /&gt;
	gregorian = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},&lt;br /&gt;
	jalali = {31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local gregorianWords = {&lt;br /&gt;
	abbrDays = {&amp;quot;Sun&amp;quot;, &amp;quot;Mon&amp;quot;, &amp;quot;Tue&amp;quot;, &amp;quot;Wed&amp;quot;, &amp;quot;Thu&amp;quot;, &amp;quot;Fri&amp;quot;, &amp;quot;Sat&amp;quot;},&lt;br /&gt;
	abbrMonths = {&amp;quot;Jan&amp;quot;, &amp;quot;Feb&amp;quot;, &amp;quot;Mar&amp;quot;, &amp;quot;Apr&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;Jun&amp;quot;, &amp;quot;Jul&amp;quot;, &amp;quot;Aug&amp;quot;, &amp;quot;Sep&amp;quot;, &amp;quot;Oct&amp;quot;, &amp;quot;Nov&amp;quot;, &amp;quot;Dec&amp;quot;},&lt;br /&gt;
	days = {&amp;quot;Sunday&amp;quot;, &amp;quot;Monday&amp;quot;, &amp;quot;Tuesday&amp;quot;, &amp;quot;Wednesday&amp;quot;, &amp;quot;Thursday&amp;quot;, &amp;quot;Friday&amp;quot;, &amp;quot;Saturday&amp;quot;},&lt;br /&gt;
	months = {&amp;quot;January&amp;quot;, &amp;quot;February&amp;quot;, &amp;quot;March&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;June&amp;quot;, &amp;quot;July&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;October&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;December&amp;quot;},&lt;br /&gt;
	abbrClock = {&amp;quot;AM&amp;quot;, &amp;quot;PM&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local IranianWords = {&lt;br /&gt;
	abbrDays = {&amp;quot;یک&amp;quot;, &amp;quot;دو&amp;quot;, &amp;quot;سه&amp;quot;, &amp;quot;چها&amp;quot;, &amp;quot;پنج&amp;quot;, &amp;quot;جمع&amp;quot;, &amp;quot;شنب&amp;quot;},&lt;br /&gt;
	abbrMonths = {&amp;quot;فرو&amp;quot;, &amp;quot;ارد&amp;quot;, &amp;quot;خرد&amp;quot;, &amp;quot;تیر&amp;quot;, &amp;quot;مرد&amp;quot;, &amp;quot;شهر&amp;quot;, &amp;quot;مهر&amp;quot;, &amp;quot;آبا&amp;quot;, &amp;quot;آذر&amp;quot;, &amp;quot;دی&amp;quot;, &amp;quot;بهم&amp;quot;, &amp;quot;اسف&amp;quot;},&lt;br /&gt;
	days = {&amp;quot;یک‌شنبه&amp;quot;, &amp;quot;دوشنبه&amp;quot;, &amp;quot;سه‌شنبه&amp;quot;, &amp;quot;چهارشنبه&amp;quot;, &amp;quot;پنج‌شنبه&amp;quot;, &amp;quot;جمعه&amp;quot;, &amp;quot;شنبه&amp;quot;},&lt;br /&gt;
	months = {&amp;quot;فروردین&amp;quot;, &amp;quot;اردیبهشت&amp;quot;, &amp;quot;خرداد&amp;quot;, &amp;quot;تیر&amp;quot;, &amp;quot;مرداد&amp;quot;, &amp;quot;شهریور&amp;quot;, &amp;quot;مهر&amp;quot;, &amp;quot;آبان&amp;quot;, &amp;quot;آذر&amp;quot;, &amp;quot;دی&amp;quot;, &amp;quot;بهمن&amp;quot;, &amp;quot;اسفند&amp;quot;},&lt;br /&gt;
	abbrClock = {&amp;quot;ق.ظ&amp;quot;, &amp;quot;ب.ظ&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.jalaliToGregorian(frame)&lt;br /&gt;
	local jy = frame.args[1] -979&lt;br /&gt;
	local jm = frame.args[2] -1&lt;br /&gt;
	local jd = frame.args[3] -1&lt;br /&gt;
&lt;br /&gt;
	local j_day_no = 365 * jy + math.floor(jy / 33) * 8 + math.floor((jy % 33 + 3) / 4)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while i &amp;lt;= jm do&lt;br /&gt;
		j_day_no = j_day_no + daysMonth.jalali[i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	j_day_no = j_day_no + jd&lt;br /&gt;
&lt;br /&gt;
	local g_day_no = j_day_no + 79&lt;br /&gt;
&lt;br /&gt;
	-- 146097 = 365*400 + 400/4 - 400/100 + 400/400&lt;br /&gt;
	local gy = 1600 + 400 * math.floor(g_day_no / 146097)&lt;br /&gt;
	g_day_no = g_day_no % 146097&lt;br /&gt;
&lt;br /&gt;
	local leap = true&lt;br /&gt;
	-- 36525 = 365*100 + 100/4&lt;br /&gt;
	if (g_day_no &amp;gt;= 36525) then&lt;br /&gt;
		g_day_no = g_day_no - 1&lt;br /&gt;
		-- 36524 = 365*100 + 100/4 - 100/100&lt;br /&gt;
		gy = gy + 100 * math.floor(g_day_no / 36524)&lt;br /&gt;
		g_day_no = g_day_no % 36524&lt;br /&gt;
&lt;br /&gt;
		if (g_day_no &amp;gt;= 365) then&lt;br /&gt;
			g_day_no = g_day_no + 1&lt;br /&gt;
		else&lt;br /&gt;
			leap = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- 1461 = 365*4 + 4/4&lt;br /&gt;
	gy = gy + 4 * math.floor(g_day_no / 1461)&lt;br /&gt;
	g_day_no = g_day_no % 1461&lt;br /&gt;
&lt;br /&gt;
	if (g_day_no &amp;gt;= 366) then&lt;br /&gt;
		leap = false&lt;br /&gt;
&lt;br /&gt;
		g_day_no = g_day_no - 1&lt;br /&gt;
		gy = gy + math.floor(g_day_no / 365)&lt;br /&gt;
		g_day_no = g_day_no % 365&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	i = 1&lt;br /&gt;
	while g_day_no &amp;gt; daysMonth.gregorian[i] +((i == 1 and leap) and 1 or 0) do&lt;br /&gt;
		g_day_no = g_day_no - daysMonth.gregorian[i] +((i == 1 and leap) and 1 or 0)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	local gm = i&lt;br /&gt;
	local gd = g_day_no + 1&lt;br /&gt;
&lt;br /&gt;
	return {gy, gm, gd}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.checkDate(frame)&lt;br /&gt;
	return not(tonumber(frame.args[1]) &amp;lt; 0 or tonumber(frame.args[1]) &amp;gt; 32767 or tonumber(frame.args[2]) &amp;lt; 1 or tonumber(frame.args[2]) &amp;gt; 12 or tonumber(frame.args[3]) &amp;lt; 1 or tonumber(frame.args[3]) &amp;gt;&lt;br /&gt;
		(daysMonth.jalali[frame.args[2] -1] +((tonumber(frame.args[2]) == 12 and not((tonumber(frame.args[1]) -979) % 33 % 4)) and 1 or 0)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gregorianToJalali(frame)&lt;br /&gt;
	local gy = frame.args[1] -1600&lt;br /&gt;
	local gm = frame.args[2] -1&lt;br /&gt;
	local gd = frame.args[3] -1&lt;br /&gt;
&lt;br /&gt;
	local g_day_no = 365 * gy + math.floor((gy + 3) / 4) - math.floor((gy + 99) / 100) + math.floor((gy + 399) / 400)&lt;br /&gt;
&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while i &amp;lt;= gm do&lt;br /&gt;
		g_day_no = g_day_no + daysMonth.gregorian[i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	if (gm &amp;gt; 1 and((gy % 4 == 0 and gy % 100 ~= 0) or(gy % 400 == 0))) then&lt;br /&gt;
		-- leap and after Feb&lt;br /&gt;
		g_day_no = g_day_no + 1&lt;br /&gt;
	end&lt;br /&gt;
	g_day_no = g_day_no + gd&lt;br /&gt;
&lt;br /&gt;
	local j_day_no = g_day_no - 79&lt;br /&gt;
&lt;br /&gt;
	local j_np = math.floor(j_day_no / 12053)&lt;br /&gt;
	j_day_no = j_day_no % 12053&lt;br /&gt;
&lt;br /&gt;
	local jy = 979 + 33 * j_np + 4 * math.floor(j_day_no / 1461)&lt;br /&gt;
&lt;br /&gt;
	j_day_no = j_day_no % 1461&lt;br /&gt;
&lt;br /&gt;
	if (j_day_no &amp;gt;= 366) then&lt;br /&gt;
		jy = jy + math.floor((j_day_no - 1) / 365)&lt;br /&gt;
		j_day_no =(j_day_no - 1) % 365&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	i = 1&lt;br /&gt;
	while i &amp;lt;= 11 and j_day_no &amp;gt; daysMonth.jalali[i] do&lt;br /&gt;
		j_day_no = j_day_no - daysMonth.jalali[i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	local jm = i&lt;br /&gt;
	local jd = j_day_no + 1&lt;br /&gt;
&lt;br /&gt;
	return {jy, jm, jd}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getJalaliDateInTable()&lt;br /&gt;
	local dateTable = os.date(&amp;quot;*t&amp;quot;)&lt;br /&gt;
	return p.gregorianToJalali({args={dateTable.year, dateTable.month + 1, dateTable.day}})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getCurrentJalaliYear()&lt;br /&gt;
	return getJalaliDateInTable()[1]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getCurrentJalaliMonth()&lt;br /&gt;
	return getJalaliDateInTable()[2] -1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Instructions about formatting: http://www.lua.org/pil/22.1.html&lt;br /&gt;
function p.getFormattedCurrentJalaliDate(frame)&lt;br /&gt;
	local gd = os.date(&amp;quot;%d&amp;quot;)&lt;br /&gt;
	local gm = os.date(&amp;quot;%m&amp;quot;)&lt;br /&gt;
	local gy = os.date(&amp;quot;%Y&amp;quot;)&lt;br /&gt;
	local j = p.gregorianToJalali({args={gy, gm + 1, gd}})&lt;br /&gt;
	return p.formatDate({args = {[&amp;quot;format&amp;quot;] = frame.args[&amp;quot;format&amp;quot;], j[1], j[2], j[3]}})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDate(frame)&lt;br /&gt;
	-- پنج‌شنبه ۱۳ شهریور ۱۳۹۳ ۱۷:۰۹:۰۰ ب.ظ&lt;br /&gt;
	frame.args[&amp;quot;format&amp;quot;] = frame.args[&amp;quot;format&amp;quot;] or &amp;quot;%A %d %B %Y %H:%M:%S %p&amp;quot;&lt;br /&gt;
	if type(frame.args[&amp;quot;in&amp;quot;]) ~= &amp;quot;nil&amp;quot; then&lt;br /&gt;
		if string.lower(frame.args[&amp;quot;in&amp;quot;]) == &amp;quot;iranian&amp;quot; then&lt;br /&gt;
			local j = p.jalaliToGregorian({args = {frame.args[1], frame.args[2], frame.args[3]}})&lt;br /&gt;
			return os.date(frame.args[&amp;quot;format&amp;quot;], os.time{year = j[1], month = j[2] - 1, day = j[3] + 1})&lt;br /&gt;
		else&lt;br /&gt;
			return os.date(frame.args[&amp;quot;format&amp;quot;], os.time{year = frame.args[1], month = frame.args[2] - 1, day = frame.args[3] + 1})&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		error(&amp;quot;آرگومان in برای متد formatDate() یافت نشد.&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getCurrentJalaliDay()&lt;br /&gt;
	return getJalaliDateInTable()[3] +1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDifferentTime(frame)&lt;br /&gt;
	return os.difftime(frame.args[1], frame.args[2])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mahan</name></author>
	</entry>
</feed>