모듈:부활절

Module

현지의 m = {}  현지의 이스터 데이터 = {     default Method(default Method) = 3,        -- 부활절 유형이 지정되지 않은 경우 부활절 날짜 계산의 기본 방법     default 포맷 = "Y-m-d",  -- 기본 날짜 출력 형식     포맷 없음      = "없음",   -- 최종 날짜 포맷을 금지합니다.     디폴트 오프셋 = 0,        -- 부활절 날짜     최소 오프셋 = -63,      --9월분     최대 오프셋 = 69,       - 성모 마리아 순결의 축일       -- API     apiEaster            = "계산", -- 퍼블릭 기능명     argEaster연도        = 1,           -- 년도 인수의 인덱스 또는 이름     argEasterMethod      = "실패",    -- 계산법이 있는 인수 인덱스 또는 이름     argEasterOffset      = "날",       -- 계산된 부활절 일요일과 관련된 오프셋(일)이 있는 인수 인덱스 또는 이름     argEasterFormat      = "형식",    -- 날짜 출력 형식(#time style)의 인수 인덱스 또는 이름       -- 에러     에러 누락연도     = "필수 인수 'year' 누락",     errorInvalid연도     = "잘못된 인수 'year': '%s'",     errorInvalidOffset   = "잘못된 인수 'day': '%s'",     errorInvalidMethod   = "잘못된 인수 'method': '%s'",     errorYearOutOfRange(에러년범위외)  = Easter 날짜는 326년에서 4099년 사이, year: %d년 사이입니다.,     errorIncorrectMethod(에러인크렉트 = "서양 또는 정교회 부활절은 1583년부터 존재하며, 연도: %d",     errorUnknownMethod(에러알 수 없는 메서드)   = "알 수 없는 메서드: %d",       방법들 = {         [줄리안]      = 1, -- 율리우스력으로 동쪽 날짜         ["동부"]     = 2, -- 그레고리력으로 동쪽 날짜         ['정통']    = 2, -- 동양의 별칭         ["콥트어"]      = 2, -- 동양의 별칭         ["에티오피아"]   = 2, -- 동양의 별칭         ["서양"]     = 3, --양력 서양 날짜         ["그레고리안"]   = 3, -- 서양식 별칭         ["가톨릭"]    = 3, -- 서양식 별칭         ["로마인"]       = 3, -- 서양식 별칭         ['개정']     = 4, --현재로서는 서양의 디팩토 가명.         ['멀티언']    = 4, -- 개정판 에일리어스         ['아스트로']       = 5, --현재로서는 서양의 디팩토 가명.     },     -- 다른 제안 또는 수정된 알고리즘은 아직 지원되지 않습니다.     --     - * 4 "Meletian" = "개정" : 1923년부터 일부 정교회에서 사용되는 율리우스력 개정     900년의 윤년 주기로 2400년까지의 그레고리력과 같다.     -- * 5 "아스트로" : 천문학적으로 관측된 예루살렘 자오선에서 니케아 지배(알레포 1997년 제안),     --때로는 그레고리오와 다르다.     --* 4월의 (동등하게) 유효기간을 기준으로 6:     * 61 '첫 번째' : 4월 첫째 일요일 = 4월 1~7일 일요일     -- * 67 "Pepuzite" : 4월 6일 이후 일요일 = 4월 7일 ~ 13일 일요일     -- * 68 "4월" = "두 번째" : 4월 둘째 일요일 = 4월 8일~14일 일요일     -- * 69 "고정" = "영국" : 4월 둘째 주 토요일 다음날 = 4월 9-15일 일요일     -- * 1년의 유효일수(DOY)의 범위(등가)에 근거하는 7:     -- * 75 "W14" : ISO 14주차 일요일 = 095-101년 일요일     -- * 79 "15" : 연중 15번째 일요일 : 099-105 일요일     -- * 72 "W15" : ISO 15주차 일요일 = 102 ~108년 일요일     -- * "대칭성":Sym454/Sym010: 293년의 윤주기 중 14주차 일요일     --     --성서 주기에서 벗어나 그레고리력으로 일주일 중 어느 요일에나:     --     -- * "세계" : 세계 달력에서 999일 일요일     -- * "긍정주의자" : 긍정력 998일 일요일     -- * "쿼토데키만주의" :니케인 이전의 현대 유대/헤브루 달력 니산 14     -- * "킨토데키만주의" :니케인 이전의 현대 유대/헤브루 달력 니산 15        상대 날짜 = {         [셉츄아게시마]             = -63,         [세카게시마]               = -56,         ["뚱뚱한 목요일"]             = -52,         [Quinquagesima]            = -49, - 에스토미히, 슈로브 선데이         ['Shrove Monday']            = -48, -- 로즈 먼데이         ["Shrove Tuesday"]           = -47, &shy; 카니발, 마디그라         ["Ash Wedday"]            = -46,         ['인보비트 선데이']         = -42,         [레미니세레 선데이]       = -35,         [오큘리 선데이]             = -28,         ["출발일요일"]           = -21, -- 모닝 선데이         ['홀리위크']                =  -7,         [팜 선데이]              =  -7,         ['성스러운 월요일]              =  -6,          [성스러운 화요일]             =  -5,          ['성스러운 수요일']           =  -4,          ['순디 목요일']          =  -3,         ["좋은 금요일"]              =  -2, -- 십자가에 못 박힌 독자         ['성스러운 토요일']            =  -1,          ["더 이상"]                   =   0, - 부활절 일요일, 부활절         ['어스터 먼데이']            =   1,         [신 머시"]             =   7,         [미에리코디아스 도미니]     =  14,         [주빌리케 선데이]          =  21,         ['캔테이트 선데이']           =  28,         [보켐 주쿤디타티스]       =  35,         ['상승 목요일']       =  39, --승천         ["펜테코스트"]                =  49, - 휘트슨         ['화이트 먼데이']              =  50,         ['트리니 선데이']           =  56,          [코르푸스 크리스티]           =  60, - 그리스도의 몸과 피         ['성심']             =  68,         ['마음의 상처']         =  69,     }, }   현지의 기능. formatEasterError(메세지, ...)     한다면 선택한다.('#', ... ) > 0 그리고나서         메세지 = string.format(메세지, ...)     끝.     돌아가다 "<span 클래스=\"에러\">" .. 메세지 .. "</span>" 끝.   현지의 기능. 로드이스터연도(연도)     한다면 것은 아니다. 연도 그리고나서         돌아가다 거짓의, formatEasterError(이스터 데이터.에러 누락연도)     끝.     현지의 결과 = 톤수(연도)     한다면 것은 아니다. 결과 또는 math.floor(결과) ~= 결과 그리고나서         돌아가다 거짓의, formatEasterError(이스터 데이터.errorInvalid연도, 연도)     끝.       돌아가다 진실의, 결과 끝.   현지의 기능. loadEasterMethod(방법, 연도)     현지의 결과 = 이스터 데이터.default Method(default Method)     한다면 방법 그리고나서         결과 = 이스터 데이터.방법들[방법]         한다면 것은 아니다. 결과 그리고나서             돌아가다 거짓의, formatEasterError(이스터 데이터.errorInvalidMethod, 방법)         끝.     끝.       한다면 연도 < > 1583 그리고나서         결과 = 1     끝.       돌아가다 진실의, 결과 끝.   현지의 기능. loadEasterOffset(하루)     한다면 것은 아니다. 하루 그리고나서         돌아가다 진실의, ""     끝.       현지의 데이터. = 이스터 데이터.상대 날짜     현지의 오프셋 = 톤수(하루)     한다면 것은 아니다. 오프셋 그리고나서         오프셋 = 데이터.[하루]     끝.     한다면 것은 아니다. 오프셋 또는 오프셋 ~= math.floor(오프셋) 또는 오프셋 < > 이스터 데이터.최소 오프셋 또는 오프셋 > 이스터 데이터.최대 오프셋 그리고나서         돌아가다 거짓의, formatEasterError(이스터 데이터.errorInvalidOffset, 하루)     끝.       한다면 오프셋 < > -1 그리고나서         돌아가다 진실의, string.format("%d일", 오프셋)     그렇지 않으면 오프셋 == -1 그리고나서         돌아가다 진실의, "-1일"     그렇지 않으면 오프셋 == 0 그리고나서         돌아가다 진실의, ""     그렇지 않으면 오프셋 == 1 그리고나서         돌아가다 진실의, "+1일"     또 다른 -- offset > 1인 경우         돌아가다 진실의, string.format(" +%d일", 오프셋)     끝. 끝.   현지의 기능. loadEasterFormat(fmt)     한다면 fmt == 이스터 데이터.포맷 없음 그리고나서         돌아가다 진실의, 제로     그렇지 않으면 것은 아니다. fmt 그리고나서         돌아가다 진실의, 이스터 데이터.default 포맷     또 다른         돌아가다 진실의, fmt     끝. 끝.   --[[ 목적: 이 함수는 부활절 일요일과 달을 반환합니다. 지정된 연도 및 방법에 대해 설명합니다.   입력: 연도 - 326 ~ 4099 사이의 임의의 연도. 방법 - 1 = 다음을 기반으로 한 원래 계산 율리우스력 2 = 원래 계산, 로 변환된 줄리안 날짜 등가 그레고리력 3 = 다음 사항을 바탕으로 한 수정된 계산 그레고리력 4 = 다음 사항을 바탕으로 한 수정된 계산 멜레타 달력   출력: 없음.   RETURNS: 0, 오류 메시지 - 오류, 일요일의 월, 일, 일   주의: 코드는 DN OSP 6.4.0 송신원으로부터 변환됩니다. 코드의 루트는 다음 URL에서 찾을 수 있습니다. http://www.gmarts.org/index.php?go=415   오리지널 노트:   이 알고리즘은 산술적 해석이다. 부활절 날짜 측정법이 개발된 3단계 중 Ron Mallen 1985에 의해, 큰 개선으로 기도서에 기재되어 있는 방법   오스트레일리아 연감 1988년 출판 이 매뉴얼 또는 캔버라 라이브러리를 참조하십시오. 사용된 방법을 명확하게 이해하기 위해   왜냐하면 이 알고리즘은 의 직접 번역이기 때문입니다. 공식 테이블, 그것은 쉽게 증명될 수 있다. 100% 정답   무료입니다!코드나 코멘트를 수정하지 말아 주세요! ]] 현지의 기능. calculateEasterDate(연도, 방법)     한다면 연도 < > 326 또는 연도 > 4099 그리고나서         부활절 날짜는 326년에서 4099년까지 유효합니다.         -- 방법 2는, 그 후의 6월의 날짜를 서포트할 필요가 있습니다.         돌아가다 0, formatEasterError(이스터 데이터.errorYearOutOfRange(에러년범위외), 연도)     끝.     한다면 연도 < > 1583 그리고. 방법 ~= 1 그리고나서         서양 또는 정교회 부활절은 1583년부터 유효하다.         돌아가다 0, formatEasterError(이스터 데이터.errorIncorrectMethod(에러인크렉트, 연도)     끝.     한다면 (연도 < > 1600 또는 연도 > 2400) 그리고. 방법 ~= 4 그리고나서         -- 개정판 줄리안 캘린더는 아직 실제로 지원되지 않습니다.         돌아가다 0, formatEasterError(이스터 데이터.errorYearOutOfRange(에러년범위외), 연도)     끝.       -- 중간 결과     현지의 첫 번째 디지 = math.floor(연도 / 100)     현지의 잔존 19 = 연도 % 19     현지의 임시직 = 0     -- 표 A에서E까지의 결과     현지의 tA = 0     현지의 tB = 0     현지의 tc = 0     현지의 tD = 0     현지의 tE = 0      -- 부활절 일요일     현지의 d = 0       -- 줄리안:     한다면 방법 == 1 또는 방법 == 2 그리고나서         -- PFM 날짜를 계산합니다.         tA   = ((225 - 11 * 잔존 19) % 30) + 21         --다음 일요일을 찾습니다.         tB   = (tA - 19) % 7         tc   = (40 - 첫 번째 디지) % 7         임시직 = 연도 % 100         tD   = (임시직 + math.floor(임시직 / 4)) % 7         tE   = ((20 - tB - tc - tD) % 7) + 1         d    = tA + tE         - 동부/정통:         한다면 방법 == 2 그리고나서             -- 줄리언을 그레고리력으로 변환합니다.             1582년 10월 5일부터 14일까지 그레고리력으로 10일을 건너뛰었다.             임시직 = 10             그레고리력으로 윤년이 되는 해는 4세기마다 1번뿐이다.             -- calendar (율리우스력으로는 매 세기는 윤년)             한다면 연도 > 1600 그리고나서                 임시직 = 임시직 + 첫 번째 디지 - 16 - math.floor((첫 번째 디지 - 16) / 4)             끝.             d = d + 임시직         끝.     -- 그레고리:     그렇지 않으면 방법 == 3 또는 방법 == 4 그리고나서         -- 파스칼 보름달(PFM) 날짜를 계산합니다.         임시직 = math.floor((첫 번째 디지 - 15) / 2)  + 202 - 11 * 잔존 19         한다면 첫 번째 디지 > 26 그리고나서             임시직 = 임시직 - 1         끝.         한다면 첫 번째 디지 > 38 그리고나서             임시직 = 임시직 - 1         끝.         한다면 첫 번째 디지 == 21 또는 첫 번째 디지 == 24 또는 첫 번째 디지 == 25 또는 첫 번째 디지 == 33 또는 첫 번째 디지 == 36 또는 첫 번째 디지 == 37 그리고나서             임시직 = 임시직 - 1         끝.         임시직 = 임시직 % 30         tA   = 임시직 + 21         한다면 임시직 == 29 그리고나서             tA = tA - 1         끝.         한다면 임시직 == 28 그리고. 잔존 19 > 10 그리고나서             tA = tA - 1         끝.         --다음 일요일을 찾습니다.         tB   = (tA - 19) % 7         tc   = (40 - 첫 번째 디지) % 4         한다면 tc == 3 그리고나서             tc = tc + 1         끝.         한다면 tc > 1 그리고나서             tc = tc + 1         끝.         임시직 = 연도 % 100         tD   = (임시직 + math.floor(임시직 / 4)) % 7         tE   = ((20 - tB - tc - tD) % 7) + 1         d    = tA + tE     또 다른         -- 알 수 없는 메서드         돌아가다 0, formatEasterError(이스터 데이터.errorUnknownMethod(에러알 수 없는 메서드), 방법)     끝.     --원래 계산이 그레고리력으로 변환되면,     부활절 일요일은 먼 훗날 5월이나 6월에도 있을 수 있다.     한다면 d > 92 그리고나서         돌아가다 6, d - 92  -- 6월     그렇지 않으면 d > 61 그리고나서         돌아가다 5, d - 61  -- 5월     그렇지 않으면 d > 31 그리고나서         돌아가다 4, d - 31  -- 에이프릴     또 다른         돌아가다 3, d       -- 3월     끝. 끝.   현지의 기능. 부활절(args)     현지의 네 알겠습니다     현지의 연도     네 알겠습니다, 연도 = 로드이스터연도(args[이스터 데이터.argEaster연도])     한다면 것은 아니다. 네 알겠습니다 그리고나서         돌아가다 연도     끝.       현지의 방법     네 알겠습니다, 방법 = loadEasterMethod(args[이스터 데이터.argEasterMethod], 연도)     한다면 것은 아니다. 네 알겠습니다 그리고나서         돌아가다 방법     끝.       현지의 오프셋     네 알겠습니다, 오프셋 = loadEasterOffset(args[이스터 데이터.argEasterOffset])     한다면 것은 아니다. 네 알겠습니다 그리고나서         돌아가다 오프셋     끝.       현지의 포맷     네 알겠습니다, 포맷 = loadEasterFormat(args[이스터 데이터.argEasterFormat])     한다면 것은 아니다. 네 알겠습니다 그리고나서         돌아가다 포맷     끝.       현지의 , 하루 = calculateEasterDate(연도, 방법)     한다면  == 0 그리고나서         돌아가다 하루     끝.       현지의 결과 = string.format(%04d-%02d-%02d%s, 연도, , 하루, 오프셋)     한다면 포맷 그리고나서         결과 = .언어.get Content Language(get Content Language)():포맷 날짜(포맷, 결과)     끝.       돌아가다 결과 끝.   m[이스터 데이터.apiEaster] = 기능. ()     돌아가다 부활절(.args) 끝.   돌아가다 m