Bahaipedia
Bahaipediaدانشنامه بهائی
メニュー
ヘルプ
おまかせ表示
最近の更新
他のプロジェクト
ツール
リンク元
関連ページの更新状況
ファイルをアップロード
特別ページ
印刷用バージョン
この版への固定リンク
ページ情報
モジュール
議論
履歴を表示
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
Navigation
Navigation
Navegación
Navigation
ナビゲーション
Điều hướng
导航
Navegação
ناوبری
Навигация
ヘルプ
おまかせ表示
最近の更新
他のプロジェクト
Learn more
Weitere Informationen
Aprender más
En savoir plus
詳しく読む
Tìm hiểu thêm
了解更多
Saiba mais
یاد بگیرید بیشتر
Узнать больше
Tools
Werkzeuge
Herramientas
Outils
ツール
Công cụ
工具
Ferramentas
ابزارها
Инструменты
リンク元
関連ページの更新状況
ファイルをアップロード
特別ページ
印刷用バージョン
この版への固定リンク
ページ情報
Translations
Übersetzungen
Traducciones
Traductions
各言語版
Bản dịch
翻译
Traduções
به زبان‌های دیگر
Переводы

モジュール:BahaiDateTime

提供: Bahaipedia
移動先:案内、検索

このモジュールについての説明文ページを モジュール:BahaiDateTime/doc に作成できます

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 --[[March]],[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
「https://ja.bahaipedia.org/index.php?title=モジュール:BahaiDateTime&oldid=15」から取得
このページの最終更新日時は 2025年5月15日 (木) 08:07 です。
コンテンツは、特に記載されていない限り、Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Licenseのもとで利用可能です。
プライバシー・ポリシー
Bahaipediaについて
免責事項
Powered by MediaWiki