Permanently protected module

모듈:복잡한 날짜

Module

--[[ __  __           _       _         ____                      _                 _ \/    ___   __   _   _    ___ _ / ___ ___  _ __ ___  _ __     _____  __   __    __ _   _ ___ \/   / _ \ / _`          / _ (_)     / _ \  '_ ` _ \  '_ \   / _ \ \/ /  / _`  / _`   __/ _ \ (_) (_ __/___ (_) __/> < (__) __/ _    _ \___/ \__,_ \__,_ _ \___(_)\____\___/ _   _   _  .__/ _ \___/_/\_\  \__,_ \__,_ \__\___ _  이 모듈은 다양한 언어로 된 복잡한 날짜 문구를 작성하기 위한 것입니다.  전개 후에는 모듈에서 변경을 먼저 적용하지 않고 이 코드를 수정하지 마십시오.복잡한 날짜/샌드박스 및 테스트 모듈:복잡한 날짜/샌드박스/테스트 케이스  작성자 및 유지관리자: * 사용자: Sn1per - 원본 초안 * 사용자: Jarekt - 원본 버전 수정 및 확장 ]]  -- 외부 모듈 및 기능 목록 현지의 p = {오류 = 제로} 현지의 18n       = 요구하다('모듈:i18n/복잡한 날짜')   -- 날짜 관련 문구의 번역에 사용됩니다. 현지의 ISO 날짜    = 요구하다('모듈:ISO 날짜')._ISOdate    -- YYY-MM-DD 및 관련 형식의 날짜 해석에 사용됩니다. 현지의 달력   --게으른 장전  -- ================================================== -- === 내부 기능 =========================== -- ==================================================  현지의 기능. langSwitch(목록.,언어)  현지의 언어 목록 = .언어.폴백위해서(언어)  table.insert(언어 목록,1,언어)  table.insert(언어 목록,math.max(#언어 목록,2),'디폴트')  위해서 i,언어  아이페어(언어 목록) 하다   한다면 목록.[언어] 그리고나서    돌아가다 목록.[언어]   끝.  끝. 끝.  -- ================================================== 현지의 기능. 포맷 넘버 1(numStr, 언어) -- 대부분 필요합니다('Module:Formatnum').formatNum 함수는 숫자를 변환하여 다른 숫자 문자를 사용하는 데 사용됩니다. -- 그 언어가 리스트에 없는 한, 그 함수는 호출되지 않습니다.  현지의 리스트 = {bn=1,bpy=1,kn=1,안녕하세요.=1,미스터=1,신규=1,=1,=1,fa=1,째깍째깍=1,mzn=1,ur=1,ar=1,ckb=1,ks=1,보다=1,['또는']=1,=1,['ml-old']=1,mn=1,=1,=1}  한다면 리스트[언어] 그리고나서 -- 언어가 목록에 있는 경우에만 호출합니다.   numStr = 요구하다('모듈:포맷 번호').format Num(numStr, 언어, 1)  끝.  돌아가다 numStr 끝.  -- ================================================== 현지의 기능. 이소다이트(데이터, 데이터 타입, 언어, 숫자, 사례.) -- YYY, YYY-MM 및 YYY-MM-DD 형식으로 날짜를 변환합니다.  한다면  것은 아니다. 사례. 그리고. 18n.번역[데이터 타입] 그리고나서   --필요한문법의대소문자를찾아보고ISOdate모듈에문의합니다.   현지의 인식하다 = langSwitch(18n.번역[데이터 타입], 언어)   한다면 유형(인식하다)=='테이블' 그리고나서    사례. = 인식하다.사례.[숫자]   끝.  끝.  돌아가다 ISO 날짜(데이터, 언어, 사례., '', 1) 끝.  -- ======================================================================= 현지의 기능. 번역 문구(날짜 1, 날짜 2, 작동, 언어, ) -- module: i18n/complex date 표를 사용하여 구문을 번역합니다.  한다면 것은 아니다. 18n.번역[작동] 그리고나서   p.오류 = string.format('<span style="background-color:red;">[모듈 오류:복합일자]), 입력 파라미터 "%s"가 인식되지 않습니다.</span>', 작동 또는 '실패')   돌아가다 ''  끝.  현지의 날짜 문자열 = langSwitch(18n.번역[작동], 언어)  한다면 유형(날짜 문자열)=='테이블' 그리고나서   날짜 문자열 = 날짜 문자열[1]  끝.  한다면 유형(날짜 문자열)=='기능' 그리고나서   현지의 날짜 펑크 = 날짜 문자열   현지의 날짜 = 18n.번역[작동]['날짜]   한다면 날짜==2 그리고나서 -- 날짜 문구 2개    날짜 문자열 = 날짜 펑크(날짜 1, 날짜 2, )   또 다른  -- 날짜 문구 1개    날짜 문자열 = 날짜 펑크(날짜 1, )   끝.  끝.    한다면 유형(날짜 문자열)=='문자열 그리고나서   -- 문자열 '$date1' 및 '$date2' 일부를 date1 및 date2 문자열로 바꿉니다.   날짜 문자열 = .스트링.서브(날짜 문자열, '$date1', 날짜 1)   날짜 문자열 = .스트링.서브(날짜 문자열, '$date2', 날짜 2)  또 다른   --심플한 문구로 만들 수 있는 보다 복잡한 문구의 특수한 경우   -- 복잡한 대소문자가 단순한 대소문자로 번역되지 않은 경우보다 'lang'으로 번역됩니다.   현지의 x = 날짜 문자열   날짜 문자열 = p._complex_날짜(x.요술, x.adj1, 날짜 1, x.유닛 1, x.시대 1, x.adj2, 날짜 2, x.유닛 2, x.시대2, 언어, 2)  끝.  돌아가다 날짜 문자열 끝.  -- ======================================================================= 현지의 기능. oneDatePhase(날짜 문자열, adj의, 시대, 유닛, 언어, 숫자, 사례., ) -- 단일 날짜 문구를 번역합니다.  한다면 숫자==2 그리고나서   .adj의, .시대, .유닛, .정확 = .adj2, .시대2, .유닛 2, .정밀도 2  끝.    -- dateStr에는 ISO 날짜, 연도 또는 숫자 등 여러 형식을 사용할 수 있습니다.  -- 10년, 세기 또는 천년  한다면 유닛 == '' 그리고나서 -- 단위는 "year", "month", "day"입니다.   날짜 문자열 = 이소다이트(날짜 문자열, adj의, 언어, 숫자, 사례.)  또 다른 -- 단위는 "century", "century", "century"입니다.   날짜 문자열 = 번역 문구(날짜 문자열, '', 유닛, 언어, )  끝.    -- 형용사("early", "mid" 등) 또는 전치사("before", "after",  - '가' 등)의 기일까지  한다면 adj의 ~= '' 그리고나서   날짜 문자열 = 번역 문구(날짜 문자열, '', adj의, 언어, )  또 다른 시대뿐인가.   날짜 문자열 = 포맷 넘버 1(날짜 문자열, 언어)  끝.    -- 시대 추가  한다면 시대 ~= '' 그리고나서   날짜 문자열 = 번역 문구(날짜 문자열, '', 시대, 언어, )  끝.  돌아가다 날짜 문자열 끝.  -- ======================================================================= 현지의 기능. 2DatePhrase(날짜 1, 날짜 2, , 언어) -- 더블 데이트 프레이즈를 번역합니다.  현지의 날짜 문자열, 사례.  현지의 시대=''  한다면 .시대 1 == .시대2 그리고나서   -- 양쪽 에러가 같은 경우는, 1 회만 추가하는 것 외에,   시대 = .시대 1   .시대 1 = ''   .시대2 = ''  끝.  사례. = {제로, 제로}  한다면 18n.번역[.요술] 그리고나서   현지의 인식하다 = langSwitch(18n.번역[.요술], 언어)   한다면 유형(인식하다)=='테이블' 그리고나서    사례. = 인식하다.사례.   끝.  끝.  날짜 1   = oneDatePhase(날짜 1, .adj1, .시대 1, .유닛 1, 언어, 1, 사례.[1], )  날짜 2   = oneDatePhase(날짜 2, .adj2, .시대2, .유닛 2, 언어, 2, 사례.[2], )  날짜 문자열 = 번역 문구(날짜 1, 날짜 2, .요술, 언어, )  한다면 시대 ~= '' 그리고나서   날짜 문자열 = 번역 문구(날짜 문자열, '', 시대, 언어, )  끝.  돌아가다 날짜 문자열 끝.  -- ======================================================================= 현지의 기능. 기타 문구(날짜 1, 날짜 2, 작동, 시대, 언어, ) -- 전문 문구를 번역합니다.  현지의 날짜 문자열 = ''     한다면 작동 == '실패' 그리고나서   한다면 날짜 2=='' 그리고나서 날짜 2 = .get Current Frame(전류 프레임)():callParser 기능('#시간', 'xmY', 날짜 1) 끝.   날짜 1 = 이소다이트(날짜 1, 작동, 언어, 1, 제로)   날짜 2 = 이소다이트(날짜 2, 작동, 언어, 2, 제로)   한다면 시대 == '' 그리고나서 시대 = '애드 끝.   날짜 문자열 = 번역 문구(날짜 1, '', 시대, 언어, ) .. ' (' .. 번역 문구(날짜 2, '', '아', 언어, ) .. ')'   시대 = ''  그렇지 않으면 작동 == '실패' 그리고나서   한다면 것은 아니다. 날짜 2 그리고. 날짜 1 그리고나서 -- 율리우스력 날짜를 그레고리력으로 변환합니다.    한다면 달력 == 제로 그리고나서     달력 = 요구하다("모듈:캘린더") -- 게으른 하숙(필요한 경우에만)    끝.    현지의 JDN = 달력._date2jdn(날짜 1, 0)    한다면 JDN 그리고나서     날짜 2 = 날짜 1 -- 첫 데이트 상대는 줄리안이라고 가정합니다.     날짜 1 = 달력._jdn2date(JDN, 1)    끝.   끝.   날짜 1 = 이소다이트(날짜 1, 작동, 언어, 1, 제로)   날짜 2 = 이소다이트(날짜 2, 작동, 언어, 2, 제로)   날짜 문자열 = 번역 문구(날짜 1, 날짜 2, 작동, 언어, )   날짜 문자열 = .스트링.서브(.스트링.서브(날짜 문자열, '%( ', '('), ' %)', ')') -- date2가 비어 있는 경우  그렇지 않으면 작동 == '연초' 또는 작동 == '10년의 전환' 또는 작동 == '세기의 전환' 그리고나서   현지의 dt = 1   한다면 작동 == '10년의 전환' 그리고나서 dt=10 끝.   한다면 것은 아니다. 날짜 2 또는 날짜 2=='' 그리고나서 날짜 2=스트링(톤수(날짜 1)-dt) 끝.   한다면 시대~='bp' 그리고. 시대~='bc' 그리고나서 날짜 1, 날짜 2 = 날짜 2, 날짜 1 끝.   한다면 작동 == '연초' 그리고나서    날짜 1 = ISO 날짜(날짜 1, 언어, '', '', 1)    날짜 2 = ISO 날짜(날짜 2, 언어, '', '', 1)   또 다른    날짜 1 = 포맷 넘버 1(날짜 1, 언어)    날짜 2 = 포맷 넘버 1(날짜 2, 언어)   끝.   날짜 문자열 = 번역 문구(날짜 1, 날짜 2, 작동, 언어, )  그렇지 않으면 작동 == '년 불명' 그리고나서   날짜 문자열 = 번역 문구('', '', 작동, 언어, ) .. '<div style="display: none;">알 수 없는 날짜 </div>'  그렇지 않으면 작동 == '실패' 그리고나서   날짜 문자열 = 스트링(.메세지.신규( "유효일" ):언어 사용 안 함( 언어 )) .. '<div style="display: none;">알 수 없는 날짜 </div>'  끝.    -- 시대 추가  한다면 시대 ~= '' 그리고나서   날짜 문자열 = 번역 문구(날짜 문자열, '', 시대, 언어, )  끝.  돌아가다 날짜 문자열 끝.  -- ======================================================================= 현지의 기능. 체크 에일리어스(str1, str2, s타입) -- 일부 입력에는 많은 에일리어스가 있습니다.- 그것들을 조정하고 문자열이 적절한 역할을 하고 있는지 확인합니다.  현지의 나가. = ''  한다면 str1 그리고. str1~='' 그리고나서   현지의 a = 18n.동의어[str1] -- str1의 동의어를 검색합니다.   한다면 a 그리고나서    나가. = a[1]   또 다른    p.오류 = string.format('<span style="background-color:red;">[모듈 오류:복잡한 날짜] ), %s이(가) 인식되지 않습니다.</span>', str1)   끝.  그렇지 않으면 str2 그리고. str2~='' 그리고나서 --유형 "sType"의 "str1"이 다음보다 비어 있는 경우...   현지의 a = 18n.동의어[str2]   --..."str2"는 같은 유형으로 비어 있지 않습니다.   한다면 a 그리고. a[2]==s타입 그리고나서    나가.  = a[1]    str2 = ''   끝.  끝.  돌아가다 나가., str2 끝.  -- ======================================================================= 현지의 기능. date Precision(날짜 문자열, 유닛) -- 이 모듈에서 "유닛"은 밀레니엄, 세기, 10년 같은 문자열입니다. -- "filename"은 Wikibase 호환 날짜 정밀도 번호입니다. 6 = 8 = century , 8 = day , 9 = year , 10 = month , 11 = day -- 문자열 또는 숫자 입력에 따라 "단위"와 "정밀"을 계산합니다.  현지의 정확  한다면 유형(유닛)=='숫자' 그리고나서   정확 = 유닛   한다면 정확>11 그리고나서 정확=11 끝. -- 정밀도 값의 범위를 잘라냅니다.   한다면     정확==6 그리고나서 유닛='아크리튬'   그렇지 않으면 정확==7 그리고나서 유닛=센츄리   그렇지 않으면 정확==8 그리고나서 유닛='실패'   또 다른 유닛 = ''   끝.  그렇지 않으면 유형(유닛)=='문자열 그리고나서   유닛 = string.lower(유닛)   한다면     유닛=='아크리튬' 그리고나서 정확=6   그렇지 않으면 유닛==센츄리    그리고나서 정확=7   그렇지 않으면 유닛=='실패'     그리고나서 정확=8   또 다른 정확=9   끝.  끝.  한다면 유닛=='' 또는 정확==9 그리고나서   현지의  = .스트링.(날짜 문자열)   한다면     <=> 4 그리고나서 정확=9   그렇지 않으면 == 7 그리고나서 정확=10   그렇지 않으면 >=10 그리고나서 정확=11   끝.   유닛=''  끝.  한다면 정확==6 그리고. 날짜 문자열.경기( 날짜 문자열, '%d000' )~=제로 그리고나서   날짜 문자열 = 스트링(math.floor(톤수(날짜 문자열)/1000) +1)  그렇지 않으면 정확==7 그리고. .스트링.경기( 날짜 문자열, '%d%d00' )~=제로 그리고나서   날짜 문자열 = 스트링(math.floor(톤수(날짜 문자열)/100) +1)  끝.   돌아가다 날짜 문자열, 유닛, 정확 끝.  -- ======================================================================= 현지의 기능. 이소다테이트2의(날짜 문자열, 정확, 시대) -- 날짜 문자열을 Quick Statements에서 사용하는 타임스탬프로 변환합니다.  현지의 스탬프 = 제로  한다면 시대 == '아' 또는 정확< >6 그리고나서   돌아가다 제로  그렇지 않으면 시대 ~= '' 그리고나서   현지의 EraLUT = {광고='+', bc='-', bp='-' }   시대 = EraLUT[시대]  또 다른   시대='+'  끝.  -- 이소다테를 빠른 문에서 사용하는 타임스탬프로 변환합니다.  한다면 정확>=9 그리고나서   한다면 string.match(날짜 문자열,"^%d%d%d%d$") 그리고나서               -- YYY 형식인 경우    스탬프 = 시대 .. 날짜 문자열 .. '-00-00T00:00:00Z/9'   그렇지 않으면 string.match(날짜 문자열,"^%d%d%d%d%d%-%d%d$") 그리고나서      -- YYY-MM 형식의 경우    스탬프 = 시대 .. 날짜 문자열 .. '-00T00:00:00Z/10'   그렇지 않으면 string.match(날짜 문자열,"^%d%d%d%d%d%-%d%d%d$") 그리고나서  -- YYY-MM-DD 형식의 경우    스탬프 = 시대 .. 날짜 문자열 .. 'T00:00:00Z/11'   끝.  그렇지 않으면 정확==8 그리고나서 -- 10년   스탬프 = 시대 .. 날짜 문자열 .. '-00-00T00:00:00Z/8'  그렇지 않으면 정확==7 그리고나서 --세기   현지의 d = 스트링(톤수(날짜 문자열)-1)   스탬프 = 시대 .. d .. '50-00-00T00:00:00Z/7'  그렇지 않으면 정확==6 그리고나서   현지의 d = 스트링(톤수(날짜 문자열)-1)   스탬프 = 시대 .. d .. '500-00-00T00:00:00Z/6'  끝.    돌아가다 스탬프 끝.  -- ======================================================================= 현지의 기능. 1DateQS 코드(날짜 문자열, adj의, 시대, 정확) -- "한 날짜" 날짜에 대한 QuickStatements 문자열을 만듭니다.  현지의 outputStr = ''   현지의 d = 이소다테이트2의(날짜 문자열, 정확, 시대)  한다면 것은 아니다. d 그리고나서   돌아가다 ''  끝.  현지의 rLUT = {            빠른='Q40719727'     , 중앙의='Q40719748',      늦게.='Q40719766',   ['1분기']='Q40690303' , ['2분기']='Q40719649'  , ['3분기']='Q40719662', ['4분기']='Q40719674',   ='Q40720559'   , 여름='Q40720564'    , 가을='Q40720568'  , 겨울='Q40720553',   전반부='Q40719687', 후반부='Q407707' }  현지의 qLUT = {['from']='P580', ['까지']='P582', ['후']='P1319', ['이전']='P1326', ['별']='P1326'}   현지의 다듬다 = rLUT[adj의]  현지의 자격 있는 = qLUT[adj의]   한다면 adj의=='' 그리고나서   outputStr = d  그렇지 않으면 adj의=='카타' 그리고나서   outputStr = d..",P1480,Q5727902"  그렇지 않으면 다듬다 그리고나서   outputStr = d.."P4241",..다듬다  그렇지 않으면 정확>7 그리고. 자격 있는 그리고나서   현지의 세기. = string.gsub(d, 'Z%/%d+', 'Z/7')   outputStr = 세기. ..",".. 자격 있는 ..","..d  끝.  돌아가다 outputStr 끝.  -- ======================================================================= 현지의 기능. 2DateQS 코드(날짜 1, 날짜 2, ) -- "두 날짜" 날짜에 대한 QuickStatements 문자열을 만듭니다.  한다면 .adj1~='' 또는 .adj2~='' 또는 .시대 1~=.시대2 그리고나서   돌아가다 '' -- QuickStatements 문자열은 형용사가 있는 두 개의 날짜 문구에 대해 생성되지 않습니다.  끝.  현지의 outputStr = ''  현지의 d1 = 이소다테이트2의(날짜 1, .정밀도 1, .시대 1)  현지의 d2 = 이소다테이트2의(날짜 2, .정밀도 2, .시대2)  한다면 (것은 아니다. d1) 또는 (것은 아니다. d2) 그리고나서   돌아가다 ''  끝.  -- 두 날짜에 공통적으로 더 낮은 정밀도로 날짜를 찾습니다.  현지의 CD  현지의 1년차 = 톤수(스트링.서브(d1,2,5))  현지의 2년차 = 톤수(스트링.서브(d2,2,5))  현지의 k = 0  위해서 i = 1,10,1 하다   한다면 스트링.서브(d1,1,i)==스트링.서브(d2,1,i) 그리고나서    k = i -- 마지막으로 일치하는 문자를 찾습니다.   끝.  끝.  한다면 k>=9 그리고나서              -- 「+YYY-MM-」는 공통이기 때문에, 같은 달입니다.   CD = 이소다테이트2의(스트링.서브(d1,2,8), 10, .시대 1)  그렇지 않으면 k>=6 그리고. k< >9 그리고나서  -- 「+YYY-」가 공통이기 때문에, 같은 해입니다.   CD = 이소다테이트2의(스트링(1년차), 9, .시대 1)  그렇지 않으면 k==4 그리고나서          -- "+YY"가 공통이므로, 같은 10년(k=4, precision=8)   CD = 이소다테이트2의(스트링(1년차), 8, .시대 1)  그렇지 않으면 k==3 그리고나서          -- "+YY"가 공통이기 때문에 같은 세기(k=3, 정밀도=7)    현지의 d = 스트링(math.floor(1년차/100) +1) --convert 1999 -> 20   CD = 이소다테이트2의( d, 7, .시대 1)  그렇지 않으면 k==2 그리고나서          -- "+Y"가 공통이므로 같은 밀레니엄(k=2, 정밀도=6)   현지의 d = 스트링(math.floor(1년차/1000) +1) --convert 1999 -> 2   CD = 이소다테이트2의( d, 6, .시대 1)  끝.  한다면 것은 아니다. CD 그리고나서   돌아가다 ''  끝.  --cd가 아닌 경우  -- 「<br/> error: 「 .. d1 .. 」 / 「 .. d2 .. 」 / " ( cd or " ) .. " / " . string . sub ( d1, 2, 5 ) .. " / " . string . sub ( d2, 5 ) . " / " / " . tostring ( k )  --끝   --  한다면 (.요술=='from-til') 또는 (.요술=='그리고' 그리고. 1년차==2년차-1) 그리고나서   outputStr = CD .."P580".. d1 .."P582".. d2  그렇지 않으면 (.요술=='between) 또는 (.요술=='또는' 그리고. 1년차==2년차-1) 그리고나서   outputStr = CD .."P1319".. d1 .."P1326".. d2  그렇지 않으면 .요술=='a2' 그리고나서   outputStr = CD .."P1319".. d1 .."P1326".. d2 ..",P1480,Q5727902"  끝.   돌아가다 outputStr 끝.  -- ======================================================================= 현지의 기능. process Inparams(요술, adj1, 날짜 1, 유닛 1, 시대 1, adj2, 날짜 2, 유닛 2, 시대2, 언어, 패스Nr)   -- 입력 처리 및 상태 배열에 날짜 저장  현지의   = {}  .요술   = string.lower(요술   또는 '')  .adj1   = string.lower(adj1   또는 '')  .adj2   = string.lower(adj2   또는 '')  .시대 1   = string.lower(시대 1   또는 '')  .시대2   = string.lower(시대2   또는 '')  .유닛 1 = string.lower(유닛 1 또는 '')  .유닛 2 = string.lower(유닛 2 또는 '')   -- 날짜 1이 누락되었지만 날짜 2가 제공된 경우, 스왑하지 않습니다.  한다면 날짜 1 == '' 그리고. 날짜 2 ~= '' 그리고나서   날짜 1 = 날짜 2   날짜 2 = ''    = {adj1 = .adj2, 시대 1 = .시대2, 유닛 1 = .유닛 2,             adj2 = '',         시대2 = '',         유닛 2 = '',  요술=.요술, 숫자=1}  끝.  한다면     날짜 2 ~= '' 그리고나서 .날짜 = 2  그렇지 않으면 날짜 1 ~= '' 그리고나서 .날짜 = 1  또 다른                    .날짜 = 0  끝.   -- 텍스트 입력의 대체 이름을 조정합니다.  현지의 요술         = 체크 에일리어스(.요술 ,''  ,'j')  .adj1 ,요술   = 체크 에일리어스(.adj1 ,요술,'a')  .유닛 1,요술  = 체크 에일리어스(.유닛 1,요술,'p')  .시대 1 ,요술   = 체크 에일리어스(.시대 1 ,요술,'e')  .스페셜,요술 = 체크 에일리어스('',요술,'c')  .adj2         = 체크 에일리어스(.adj2 ,'','a')  .유닛 2       = 체크 에일리어스(.유닛 2,'','p')  .시대2         = 체크 에일리어스(.시대2 ,'','e')  .요술         = 요술  .언어         = 언어  한다면 p.오류~=제로 그리고나서   돌아가다 제로  끝.   -- 날짜 정밀도 값을 계산합니다.  날짜 1, .유닛 1, .정밀도 1 = date Precision(날짜 1, .유닛 1)  날짜 2, .유닛 2, .정밀도 2 = date Precision(날짜 2, .유닛 2)   --특별한 경우의 대처  --심플한 문구로 복잡한 문구를 만들 수 있습니다.따라서 패스 #1에서 우리는 다음을 생성하려고 합니다.  --복잡한 문구를사용한문구를사용하여두번째패스보다더찾을수없는경우우리는구축하려고합니다.  --간단한 것 중 하나.  한다면 패스Nr==1 그리고나서   한다면 .adj1=='카타' 그리고. .날짜 == 2 그리고나서    .요술 = 'a2'    .adj1 = ''    .adj2 = ''   끝.   한다면 .날짜 == 2 그리고. .adj1=='늦었다' 그리고. .adj2=='조기' 그리고. .요술=='그리고'   그리고. .유닛 1==.유닛 2 그리고. .시대 1==.시대2 그리고나서    한다면 .유닛 1==센츄리 그리고나서     .요술='세기의 전환'    그렇지 않으면 .유닛 1=='실패' 그리고나서     .요술='10년의 전환'    그렇지 않으면 .유닛 1=='' 그리고나서     .요술='연초'    끝.    .adj1 = ''    .adj2 = ''    .유닛 1 = ''    .유닛 2 = ''   끝.  끝.   .adj의, .시대, .유닛, .정확 = .adj1, .시대 1, .유닛 1, .정밀도 1  돌아가다 날짜 1, 날짜 2,  끝.  -- ================================================== -- === 외부 기능 =========================== -- ==================================================  기능. p.시대()  -- 프로세스 입력  현지의 날짜 문자열  현지의 args    = .args  한다면 것은 아니다. (args.언어 그리고. .언어.is Supported Language(지원 언어)(args.언어)) 그리고나서   args.언어 = :callParser 기능( "int", "실패" ) --사용자가 선택한 언어를 가져옵니다.  끝.  현지의 언어    = args['실패']  현지의 날짜 문자열 = args['날짜'] 또는 ''  현지의 raa 타입 = string.lower(args[시대]  또는 '')   날짜 문자열 = ISO 날짜(날짜 문자열, 언어, '', '', 1)  한다면 raa 타입 그리고나서    raa 타입 = 체크 에일리어스(raa 타입 ,'','e')   날짜 문자열 = 번역 문구(날짜 문자열, '', raa 타입, 언어, {})  끝.  돌아가다 날짜 문자열 끝.  -- ======================================================================= 기능. p._complex_날짜(요술, adj1, 날짜 1, 유닛 1, 시대 1, adj2, 날짜 2, 유닛 2, 시대2, 언어, 패스Nr)  현지의 산출량=''  현지의    -- 입력 처리 및 상태 배열에 날짜 저장  날짜 1, 날짜 2,   = process Inparams(요술, adj1, 날짜 1, 유닛 1, 시대 1, adj2, 날짜 2, 유닛 2, 시대2, 언어, 패스Nr)  한다면 p.오류~=제로 그리고나서   돌아가다 제로  끝.   현지의 errorStr. = string.format(    '\n*sq=%s, adj1=%s, era1=%s, unit1=%s, prec1=%s, adj2=%s, unit2=%s, prec2=%i, special=%s',    .요술, .adj1, .시대 1, .유닛 1, .정밀도 1,    .adj2, .시대2, .유닛 2, .정밀도 2, .스페셜)   -- 전문 함수를 호출합니다.  현지의 QS 코드 = ''  한다면 .스페셜~='' 그리고나서   산출량 = 기타 문구(날짜 1, 날짜 2, .스페셜, .시대 1, 언어, )  그렇지 않으면 .요술~='' 그리고나서   QS 코드 = 2DateQS 코드(날짜 1, 날짜 2, )   산출량 = 2DatePhrase(날짜 1, 날짜 2, , 언어)  그렇지 않으면 .adj1~='' 또는 .시대 1~='' 또는 .유닛 1~='' 그리고나서   산출량 = oneDatePhase(날짜 1, .adj1, .시대 1, .유닛 1, 언어, 1, 제로, )   QS 코드 = 1DateQS 코드(날짜 1, .adj1, .시대 1, .정밀도 1)  그렇지 않으면 날짜 1~='' 그리고나서   산출량 = ISO 날짜(날짜 1, 언어, '', '시작하지 않음, '100-999')  끝.  한다면 p.오류~=제로 그리고나서   돌아가다 errorStr.  끝.   -- 문자열에 wikicode가 있는 경우 실행한다.  한다면 .스트링.발견하다(산출량, '{') 그리고나서   산출량 = .get Current Frame(전류 프레임)():전처리(산출량)  끝.  한다면 QS 코드 그리고. #QS 코드>0 그리고나서   QS 코드 = '<div style="display: none;"> 날짜 QS:P', .. QS 코드 .. '/div>'  끝.   돌아가다 산출량 .. QS 코드 끝.  -- ======================================================================= 기능. p._complex_date_cer(요술, adj1, 날짜 1, 유닛 1, 시대 1, adj2, 날짜 2, 유닛 2, 시대2, 확실성, 언어) -- p._complex_date와 동일하지만 확실성을 위해 추가 파라미터가 포함되어 있습니다.아마도, 아마도, 등입니다.  현지의 날짜 문자열 = p._complex_날짜(요술, adj1, 날짜 1, 유닛 1, 시대 1, adj2, 날짜 2, 유닛 2, 시대2, 언어, 1)  확실성 = 체크 에일리어스(확실성, 요술, 'r)  현지의 LUT = {아마='Q56644435',  아마도='Q18122778', 아마도.='Q30230067', 한 바퀴 돌다='Q5727902' }  한다면 확실성 그리고. LUT[확실성] 그리고나서   현지의   = {}    날짜 1, 날짜 2,   = process Inparams(요술, adj1, 날짜 1, 유닛 1, 시대 1, adj2, 날짜 2, 유닛 2, 시대2, 언어, 1)   날짜 문자열 = 번역 문구(날짜 문자열, '', 확실성, 언어, )   날짜 문자열 = string.gsub(날짜 문자열, '(% <div style=" display: none;"%> 날짜 QS:P, [^%<]+(%/div%>)'', '%1, P1480', .. LUT[확실성] .. '%2' )  끝.  돌아가다 날짜 문자열 끝.  -- ======================================================================= 기능. p.complex_date()  -- 프로세스 입력  현지의 날짜 문자열  현지의 args   = .args  한다면 것은 아니다. (args.언어 그리고. .언어.is Supported Language(지원 언어)(args.언어)) 그리고나서   args.언어 = :callParser 기능( "int", "실패" ) --사용자가 선택한 언어를 가져옵니다.  끝.  현지의 날짜 1  = args['날짜 1'] 또는 args['2'] 또는 args['날짜'] 또는 ''  현지의 날짜 2  = args['날짜2'] 또는 args['3'] 또는 ''  현지의 요술   = args['실패']  또는 args['1'] 또는 ''  현지의 adj1   = args['1번']  또는 args['실패'] 또는 ''  현지의 adj2   = args['flash2'] 또는 ''  현지의 유닛 1 = args['1번'] 또는 args['실패'] 또는 ''  현지의 유닛 2 = args['flash2'] 또는 args['실패'] 또는 ''  현지의 시대 1   = args['era1'] 또는 args[시대] 또는 ''  현지의 시대2   = args['era2'] 또는 args[시대] 또는 ''  현지의 확실성 = args['실패']  현지의 언어   = args['실패']   날짜 문자열 = p._complex_date_cer(요술, adj1, 날짜 1, 유닛 1, 시대 1, adj2, 날짜 2, 유닛 2, 시대2, 확실성, 언어)  한다면 p.오류~=제로 그리고나서   날짜 문자열 = p.오류 .. '[카테고리:잘못된 매개 변수가 있는 복합 날짜 템플릿을 사용하는 페이지]'  끝.  돌아가다 날짜 문자열 끝.  돌아가다 p