Bahaipedia
Bahaipediaدانشنامه بهائی
Trình đơn
Trợ giúp về MediaWiki
Trang ngẫu nhiên
Thay đổi gần đây
Tại dự án khác
Công cụ
Các liên kết đến đây
Thay đổi liên quan
Tải lên tập tin
Trang đặc biệt
Tải về bản in
Liên kết thường trực
Thông tin trang
Mô đun
Thảo luận
Xem lịch sử
Chưa đăng nhập
Tin nhắn
Đóng góp
Tạo tài khoản
Đăng nhập
Navigation
Navigation
Navegación
Navigation
ナビゲーション
Điều hướng
导航
Navegação
ناوبری
Навигация
Trợ giúp về MediaWiki
Trang ngẫu nhiên
Thay đổi gần đây
Tại dự án khác
Learn more
Weitere Informationen
Aprender más
En savoir plus
詳しく読む
Tìm hiểu thêm
了解更多
Saiba mais
یاد بگیرید بیشتر
Узнать больше
Tôn giáo Baha'i
Đức Baha'u'llah
Đức ‘Abdu’l-Baha
Tools
Werkzeuge
Herramientas
Outils
ツール
Công cụ
工具
Ferramentas
ابزارها
Инструменты
Các liên kết đến đây
Thay đổi liên quan
Tải lên tập tin
Trang đặc biệt
Tải về bản in
Liên kết thường trực
Thông tin trang
Translations
Übersetzungen
Traducciones
Traductions
各言語版
Bản dịch
翻译
Traduções
به زبان‌های دیگر
Переводы

Mô đun:BahaiDateTime

Từ Bahaipedia
Bước tới:điều hướng, tìm kiếm

Có thể viết tài liệu về mô đun này tại Mô đun:BahaiDateTime/tài liệu.

local module = {}

local bahaiMonthsNames_map = {
	[1]  = {arabic = "Bahá",       },
	[2]  = {arabic = "Jalál",      },
	[3]  = {arabic = "Jamál",      },
	[4]  = {arabic = "‘Aẓamat",    },
	[5]  = {arabic = "Núr",        },
	[6]  = {arabic = "Raḥmat",     },
	[7]  = {arabic = "Kalimát",    },
	[8]  = {arabic = "Kamál",      },
	[9]  = {arabic = "Asmá’",      },
	[10] = {arabic = "‘Izzat",     },
	[11] = {arabic = "Mashíyyat", },
	[12] = {arabic = "‘Ilm",       },
	[13] = {arabic = "Qudrat",     },
	[14] = {arabic = "Qawl",       },
	[15] = {arabic = "Masá’il",    },
	[16] = {arabic = "Sharaf",    },
	[17] = {arabic = "Sulṭán",     },
	[18] = {arabic = "Mulk",       },
	[19] = {arabic = "Ayyám-i-Há",       },
	[20] = {arabic = "‘Alá’",      },
}

local newYears_map = {
	[2015]=21 --[[Mars]],[2016]=20,[2017]=20,[2018]=21,[2019]=21,[2020]=20,[2021]=20,[2022]=21,[2023]=21,[2024]=20,[2025]=20,[2026]=21,[2027]=21,[2028]=20,[2029]=20,[2030]=20,[2031]=21,[2032]=20,[2033]=20,[2034]=20,[2035]=21,[2036]=20,[2037]=20,[2038]=20,[2039]=21,[2040]=20,[2041]=20,[2042]=20,[2043]=21,[2044]=20,[2045]=20,[2046]=20,[2047]=21,[2048]=20,[2049]=20,[2050]=20,[2051]=21,[2052]=20,[2053]=20,[2054]=20,[2055]=21,[2056]=20,[2057]=20,[2058]=20,[2059]=20,[2060]=20,[2061]=20,[2062]=20,[2063]=20,[2064]=20,
}

local interCalaryDays_map = {
	[2016]=4,[2017]=4,[2018]=5,[2019]=4,[2020]=4,[2021]=4,[2022]=5,[2023]=4,[2024]=4,[2025]=4,[2026]=5,[2027]=4,[2028]=4,[2029]=4,[2030]=4,[2031]=5,[2032]=4,[2033]=4,[2034]=4,[2035]=5,[2036]=4,[2037]=4,[2038]=4,[2039]=5,[2040]=4,[2041]=4,[2042]=4,[2043]=5,[2044]=4,[2045]=4,[2046]=4,[2047]=5,[2048]=4,[2049]=4,[2050]=4,[2051]=5,[2052]=4,[2053]=4,[2054]=4,[2055]=5,[2056]=4,[2057]=4,[2058]=4,[2059]=4,[2060]=5,[2061]=4,[2062]=4,[2063]=4,[2064]=5,[2065]=4,
}

--Example: {year=gregorianYear, month=3, day=newYears_map[gregorianYear], hour=0, sec=1} 
local function CreateDate(dateData)
    local dateStamp = os.time(dateData)
	return  os.date("*t", dateStamp)
end

local function GregorianDateToBahaiDate(gregorianCurrentYear, gregorianCurrentMonth, gregorianCurrentDay) 
	local currentDate = CreateDate({year=gregorianCurrentYear, month=gregorianCurrentMonth, day=gregorianCurrentDay, hour=0, sec=1} )
	
	--Assumption that it is already after new year
	local newYearDate = CreateDate({year=gregorianCurrentYear, month=3, day=newYears_map[gregorianCurrentYear], hour=0, sec=1} )
	local currentBahaiDayOfYear = currentDate.yday - newYearDate.yday + 1
	
	local bahaiYear = gregorianCurrentYear - 1843
	 
	--Current Bahai year started in previous gregorian year
	if currentDate.yday	< newYearDate.yday then
		bahaiYear = bahaiYear - 1
		newYearDate = CreateDate({year=gregorianCurrentYear-1, month=3, day=newYears_map[gregorianCurrentYear-1], hour=0, sec=1} )
		local lastDay = CreateDate({year=gregorianCurrentYear-1, month=12, day=31, hour=0, sec=1} ).yday
		local bahaiDaysInPreviousGregorianYear = lastDay - newYearDate.yday
		local bahaiDaysInCurrentGregorianYear = currentDate.yday
		currentBahaiDayOfYear = bahaiDaysInPreviousGregorianYear + bahaiDaysInCurrentGregorianYear + 1
	end
	
	local bahaiDay = 0
	local bahaiMonth = 19
	local lastMonthDays
	--Determining month
	for month=1, 20 do
		if month == 19 then
			lastMonthDays = interCalaryDays_map[gregorianCurrentYear]
		else
			lastMonthDays = 19 
		end
		
		bahaiDay = bahaiDay + lastMonthDays
		
		if bahaiDay >= currentBahaiDayOfYear then
			bahaiMonth = month
			break
		end
	end
	
	--Determining day of the month
	local bahaiDayOfMonth = currentBahaiDayOfYear - (bahaiDay - lastMonthDays)

	return {year = bahaiYear, month = bahaiMonth, day = bahaiDayOfMonth, yday = currentBahaiDayOfYear}
	--return "CE: " .. currentDate.year .. "-" .. currentDate.month .. "-" .. currentDate.day .. "    BE: Year:" .. bahaiYear  .. " Month:"..bahaiMonth .. " (" .. bahaiMonthsNames_map[bahaiMonth].arabic..") Day:" .. bahaiDayOfMonth .. " Day of year:" .. currentBahaiDayOfYear
end

local function Frame2Date(frame)
	local gregorianCurrentYear = tonumber(frame:getArgument(1):expand())
	local gregorianCurrentMonth = tonumber(frame:getArgument(2):expand())
	local gregorianCurrentDay = tonumber(frame:getArgument(3):expand())
	return gregorianCurrentYear, gregorianCurrentMonth, gregorianCurrentDay
end



local function FormatBahaiDate(bahaiDate, formatName)
	if formatName == "DayofMonth" then
		return 	bahaiDate.day .. " " .. bahaiMonthsNames_map[bahaiDate.month].arabic
	end
	
	if formatName == "Year" then
		return 	bahaiDate.year
	end
	
	if formatName == "FullDate" then
		return 	bahaiDate.day .. " " .. bahaiMonthsNames_map[bahaiDate.month].arabic .. ", " .. bahaiDate.year
	end

	return "BE: Year:" .. bahaiDate.year  .. " Month:"..bahaiDate.month .. " (" .. bahaiMonthsNames_map[bahaiDate.month].arabic..") Day:" .. bahaiDate.day .. " Day of year:" .. bahaiDate.yday
end

--Arguments: {{CURRENTYEAR}}|{{CURRENTMONTH1}}|{{CURRENTDAY}}
--Result: "18 ‘Alá’, 176"
function module.GregorianDateToBahaiDate(frame) 
	return FormatBahaiDate(GregorianDateToBahaiDate(Frame2Date(frame)) , "FullDate")
end

--Arguments: {{CURRENTYEAR}}|{{CURRENTMONTH1}}|{{CURRENTDAY}}
--Result: "18 ‘Alá’"
function module.GregorianDateToBahaiDayMonth(frame) 
	return FormatBahaiDate(GregorianDateToBahaiDate(Frame2Date(frame)) , "DayofMonth")
end

--Arguments: {{CURRENTYEAR}}|{{CURRENTMONTH1}}|{{CURRENTDAY}}
--Result: 176
function module.GregorianDateToBahaiYear(frame) 
	return FormatBahaiDate(GregorianDateToBahaiDate(Frame2Date(frame)) , "Year")
end

function module.DatesTest()
	local dateStamp = os.time({year=2016, month=1, day=1, hour=0, sec=1})
	local result = ""
	for i=1, 4400 do 
		local date = os.date("*t", dateStamp)
		local bahaiDate = GregorianDateToBahaiDate(date.year, date.month, date.day) 
		local bahaiDateText = "CE: " .. date.year .. "-" .. date.month .. "-" .. date.day .. "  " 
		.. FormatBahaiDate(bahaiDate)
		
		result = result .. bahaiDateText .. tostring(mw.html.create( 'div' ))
		dateStamp = dateStamp + 86400
	end

	return result
end

--Returns current date time in in Bahai format. Arguments: requestedDateDype
local function GetFormattedCurrentBahaiDate(requestedDateDype) 
	local date = os.date("*t")
	local bahaiDate = GregorianDateToBahaiDate(date.year, date.month, date.day) 
	return FormatBahaiDate(bahaiDate, requestedDateDype)
end

function module.DayofMonth()
	return GetFormattedCurrentBahaiDate("DayofMonth") 
end

function module.Year()
	return GetFormattedCurrentBahaiDate("Year") 
end


--[[
{{#invoke:BahaiDateTime|GregorianDateToBahaiDate|{{CURRENTYEAR}}|{{CURRENTMONTH1}}|{{CURRENTDAY}} }}

{{#invoke:BahaiDateTime|GregorianDateToBahaiDayMonth|{{CURRENTYEAR}}|{{CURRENTMONTH1}}|{{CURRENTDAY}} }}

{{#invoke:BahaiDateTime|GregorianDateToBahaiYear|{{CURRENTYEAR}}|{{CURRENTMONTH1}}|{{CURRENTDAY}} }}

]]

return module
Lấy từ “https://vi.bahaipedia.org/index.php?title=Mô_đun:BahaiDateTime&oldid=1124”
Trang này được sửa đổi lần cuối vào ngày 15 tháng 5 năm 2025, 23:03.
Nếu không có ghi chú khác, nội dung này được cấp phép Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.
Quy định quyền riêng tư
Giới thiệu Bahaipedia
Lời phủ nhận
Powered by MediaWiki