모듈:복잡한 날짜
Module| 이 모듈은 페이지 보호 대상입니다.이 모듈은 매우 많은 페이지에서 사용 중이거나 매우 자주 교체됩니다.파손이나 실수는 많은 페이지에 영향을 미치고 사소한 편집이라도 서버에 큰 부하가 걸릴 수 있으므로 편집으로부터 보호됩니다. |
| 이 Lua 모듈은 약 61,000페이지에 걸쳐 사용되고 있으며, 변경은 널리 알려져 있습니다.모듈의 /sandbox 또는 /testcase 서브페이지 또는 자체 모듈 샌드박스에서 변경 내용을 테스트합니다.변경을 실장하기 전에 토크 페이지에서 변경에 대해 논의해 주십시오. |
사용.
이 모듈은 날짜 문자열 처리를 목적으로 합니다.모듈에 의해 사용됩니다.위키데이터IB
복잡한 날짜
이 기능은 c:template 뒤에 있는 엔진입니다.복잡한 날짜.자세한 내용은 해당 템플릿을 참조하십시오.
사용방법:
- 는 직접 사용할 수 없으며 c:를 통해서만 사용해야 합니다.템플릿:기타 날짜 및 기타 템플릿
{{#invoke:Complex_date complex_date adj1= date1= era1= precision1= conj=- adj2= date2= era2= precision2= lang=}}
또는
{{#invoke:Complex_date complex_date 1= 2= 3= era= lang=}}
매개 변수(단순 구문):
- 1
- 옵션. "c:Template:기타 날짜
- 2
- 날짜 #1
- 3
- 날짜 #2
파라미터(고급 구문):
- 요술
- 두 날짜 사이의 링크가 "-"(from-until), between 또는 (c:disc: 참조)인 경우:복잡한 날짜)
- adj1, adj2
- 단일 날짜를 나타내는 데 사용되는 형용사와 전치사.가능한 값: date1과 date2의 어느 부분이 관련되어 있는지를 나타내기 위해 사용되는 조기, 중간, 늦, 봄, 여름, 가을, 겨울, 상반기, 하반기, 1분기, 2분기, 3분기, 4분기 등입니다(c:template 참조).복잡한 날짜)
- date1, date2
- 관련 날짜형식:숫자나 {{ISOdate}}}을(를) 사용합니다.
- 정밀도 1, 정밀도 1
- 통상 연도 또는 그 이상의 정밀도(디폴트)이지만, 10년, 세기 또는 천년일 수도 있다.그러면 관련된 날짜는 특정 날짜보다 세기 또는 천년일 것이다.
- ra1, ra2
- 이러한 날짜가 유래한 시대(c:disc:disc:disc:disc:disc복합일자) If 파라미터
era이 2개의 파라미터를 덮어씁니다.
날짜 형식의 국제화는 다음 모듈에서 확인할 수 있습니다.I18n/복잡한 날짜
의존 관계
모듈: Complex_date는 다음 모듈에 의존합니다.
- 모듈: 캘린더(의존관계가 없는 빈약한 로드)
- 모듈: ISOdate
- 모듈: DateI18n(의존관계 없음)
- 모듈: 글로벌 없음(en부터).위키백과)
- 모듈: DateI18n(의존관계 없음)
- 모듈: i18n/복잡한 날짜
- 모듈: Ordinal-cd(지속 부하)
- 모듈: I18n/ordinal(의존관계 없음)
- 모듈: 예(en부터).wikipedia) (의존관계 없음)
- 모듈: Formatnum(의존관계 없음)
- 모듈: Roman-cd(의존관계가 없는 지연부하)
- 모듈: 언어(의존관계가 없는 느슨한 부하)
- 모듈: 글로벌 없음(en부터).위키백과)
- 모듈: Ordinal-cd(지속 부하)
이들을 호출하는 코드 중 영어 위키피디아에서는 사용되지 않기 때문에 게으른 의존관계 중 일부는 로컬에 존재하지 않습니다.
특별히 명기되어 있지 않은 한 각 모듈의 정규 버전은 Commons에서 확인할 수 있습니다.
--[[ __ __ _ _ ____ _ _ \/ ___ __ _ _ ___ _ / ___ ___ _ __ ___ _ __ _____ __ __ __ _ _ ___ \/ / _ \ / _` / _ (_) / _ \ '_ ` _ \ '_ \ / _ \ \/ / / _` / _` __/ _ \ (_) (_ __/___ (_) __/> < (__) __/ _ _ \___/ \__,_ \__,_ _ \___(_)\____\___/ _ _ _ .__/ _ \___/_/\_\ \__,_ \__,_ \__\___ _ 이 모듈은 다양한 언어로 된 복잡한 날짜 문구를 작성하기 위한 것입니다. 전개 후에는 모듈에서 변경을 먼저 적용하지 않고 이 코드를 수정하지 마십시오.복잡한 날짜/샌드박스 및 테스트 모듈:복잡한 날짜/샌드박스/테스트 케이스 작성자 및 유지관리자: * 사용자: 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