모듈:날짜 테이블 정렬/샌드박스

Module
현지의 예 아니오 = 요구하다('모듈:'예스노') 현지의 랑그 = mw.언어.콘텐츠 언어 가져오기() 현지의 N_YEAR_DIGITS = 12 현지의 최대_년 = 10^N_YEAR_DIGITS - 1  -------------------------------------------------------------------------------- Dts 클래스 --------------------------------------------------------------------------------  현지의 Dts = {} Dts.__index = Dts  Dts.몇달. = {  "1월",  "2월",  "행진곡",  "4월",  "메이",  "준",  "7월",  "8월",  "9월",  "10월",  "11월",  "12월" }  Dts.월 Abbr = {  "잔",  "2월",  "마르",  "4월",  "메이",  "준",  "줄",  "아우그",  "셉",  "Oct",  "11월",  "12월" }  기능. Dts._makeMonthSearch(t)  현지의 리트 = {}  위해서 i,   짝을 짓다(t) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   리트[:더 낮게()] = i  끝.  돌아가다 리트 끝. Dts.월 검색 = Dts._makeMonthSearch(Dts.몇달.) Dts.월 검색 Abbr = Dts._makeMonthSearch(Dts.월 Abbr) Dts.월 검색 Abbr['셉'] = 9 9월과 일치하도록 "9월" 허용  Dts.형식 = {  나의 = 진실의,  미디 = 진실의,  디엠 = 진실의,  md = 진실의,  나의 = 진실의,  y = 진실의,  m = 진실의,  d = 진실의,  숨다 = 진실의 }  기능. Dts.신규(논병아리)  현지의 자신 = 상을 차리다({}, Dts)   날짜 매개 변수를 구문 분석합니다.  이 단계에서는 날짜가 DMY 형식인지 YMD 형식인지도 기록합니다.  월 이름이 단축되었는지 여부를 나타냅니다.  한다면 논병아리[2] 또는 논병아리[3] 또는 논병아리[4] 그리고나서   자신:구문 분석 날짜 부품(논병아리[1], 논병아리[2], 논병아리[3], 논병아리[4])  그렇지 않으면 논병아리[1] 그리고나서   자신:구문 분석 날짜(논병아리[1])  끝.   잘못된 값에 오류 발생  한다면 자신.연도 그리고나서   한다면 자신.연도 == 0 그리고나서    오류('년은 0일 수 없습니다.', 0)   그렇지 않으면 자신.연도 < -최대_년 그리고나서    오류(string.형식(     '년은 %s보다 작을 수 없습니다.',     랑그:formatNum(-최대_년)    ), 0)   그렇지 않으면 자신.연도 > 최대_년 그리고나서    오류(string.형식(     '년은 %s보다 클 수 없습니다.',     랑그:formatNum(최대_년)    ), 0)   그렇지 않으면 수학.플로어(자신.연도) ~= 자신.연도 그리고나서    오류('년은 정수여야 합니다.', 0)   끝.  끝.  한다면 자신. 그리고. (   자신. < 1   또는 자신. > 12   또는 수학.플로어(자신.) ~= 자신.  ) 그리고나서   오류('숫자는 1에서 12 사이의 정수여야 합니다.', 0)  끝.  한다면 자신.낮의 그리고. (   자신.낮의 < 1   또는 자신.낮의 > 31   또는 수학.플로어(자신.낮의) ~= 자신.낮의  ) 그리고나서   오류('일은 1에서 31 사이의 정수여야 합니다.', 0)  끝.   월 약어 동작(예: 출력 여부)을 설정합니다.  "1월" 또는 "1월".  한다면 논병아리.수도원의 그리고나서   자신.약어 = 논병아리.수도원의 == '온' 또는 예 아니오(논병아리.수도원의) 또는 거짓의  또 다른   자신.약어 = 자신.약어 또는 거짓의  끝.   형식 문자열 설정  한다면 논병아리.서식을 그리고나서   자신.서식을 = 논병아리.서식을  또 다른   자신.서식을 = 자신.서식을 또는 'mdy'  끝.  한다면 것은 아니다. Dts.형식[자신.서식을] 그리고나서   오류(string.형식(    "%s'은(는) 올바른 형식이 아닙니다.",    끈으로 묶는(자신.서식을)   ), 0)  끝.   추가 키를 설정합니다.이렇게 하면 정렬 키 끝에 값이 추가되어 사용자가  동일한 날짜를 수동으로 구분합니다.  한다면 논병아리.키를 추가 그리고나서   자신.키를 추가 = 수에 달하여(논병아리.키를 추가)   한다면 것은 아니다. 자신.키를 추가 또는    자신.키를 추가 < 0 또는    자신.키를 추가 > 9999 또는    수학.플로어(자신.키를 추가) ~= 자신.키를 추가   그리고나서    오류("'addkey' 매개 변수는 0에서 9999 사이의 정수여야 합니다.", 0)   끝.  끝.   표시된 날짜를 래핑할 수 있는지 여부를 설정합니다.  자신.포장하는 중 = 논병아리.노랩 == '꺼짐' 또는 예 아니오(논병아리.노랩) == 거짓의   돌아가다 자신 끝.  기능. Dts:has 날짜()  돌아가다 (자신.연도 또는 자신. 또는 자신.낮의) ~= 영의 끝.  월 이름에 대한 월 번호를 찾고 isAbreaked 플래그를 다음으로 설정합니다. 적절한 기능. Dts:parseMonthName(s)  s = s:더 낮게()  현지의  = Dts.월 검색[s]  한다면  그리고나서   돌아가다   또 다른    = Dts.월 검색 Abbr[s]   한다면  그리고나서    자신.약어 = 진실의    돌아가다    끝.  끝.  돌아가다 영의 끝.  구문 분석은 연도, 월, 일 및 기간에 대한 매개 변수를 구분합니다. 기능. Dts:구문 분석 날짜 부품(연도, , 낮의, bc)  한다면 연도 그리고나서   자신.연도 = 수에 달하여(연도)   한다면 것은 아니다. 자신.연도 그리고나서    오류(string.형식(     "%s'은(는) 유효한 연도가 아닙니다.",     끈으로 묶는(연도)    ), 0)   끝.  끝.  한다면  그리고나서   한다면 수에 달하여() 그리고나서    자신. = 수에 달하여()   그렇지 않으면 유형() == '끈' 그리고나서    자신. = 자신:parseMonthName()   끝.   한다면 것은 아니다. 자신. 그리고나서    오류(string.형식(     "%s'은(는) 유효한 달이 아닙니다.",     끈으로 묶는()    ), 0)   끝.  끝.  한다면 낮의 그리고나서   자신.낮의 = 수에 달하여(낮의)   한다면 것은 아니다. 자신.낮의 그리고나서    오류(string.형식(     "%s'은(는) 유효한 날짜가 아닙니다.",     끈으로 묶는(낮의)    ), 0)   끝.  끝.  한다면 bc 그리고나서   현지의 blower = 유형(bc) == '끈' 그리고. bc:더 낮게()   한다면 blower == 'bc' 또는 blower == '''비공식''' 그리고나서    한다면 자신.연도 그리고. 자신.연도 > 0 그리고나서     자신.연도 = -자신.연도    끝.   그렇지 않으면 blower ~= 광고 그리고. blower ~= 'ce' 그리고나서    오류(string.형식(     "%s'은(는) 유효한 기간 코드가 아닙니다('BC', 'BCE', 'AD' 또는 'CE' 예상).",     끈으로 묶는(bc)    ), 0)   끝.  끝. 끝.  이 메서드는 날짜 문자열을 구문 분석합니다.이것은 가난한 사람의 대안입니다. mw.language:formatDate, 그러나 결국 우리가 날짜를 구문 분석하는 것이 더 쉬워집니다. 여기서 mw.language를 사용하는 것보다:formatDate를 사용한 다음 다음에 확인하려고 합니다. 월이 단축되었는지 여부와 DMY인지 MDY인지 여부를 확인할 수 있습니다. 기능. Dts:구문 분석 날짜(날짜.)  일반 오류 메시지입니다.  현지의 기능. 날짜오류()   오류(string.형식(    "%s'은(는) 잘못된 날짜입니다.",    날짜.   ), 0)  끝.   현지의 기능. parseDayOrMonth(s)   한다면 s:찾아내다('^%d%d?
                
) 그리고나서 돌아가다 수에 달하여(s) 끝. 끝. 현지의 기능. 연도 구문 분석(s) 한다면 s:찾아내다('^%d%d%d%d%d?
$$SIDE_BOTTOM$$
    $$BOTTOM$$