모듈:오래전
Module| 이 모듈은 페이지 보호 대상입니다.매우 많은 페이지에서 사용 중이거나 매우 자주 교체되는 가시성이 높은 모듈입니다.파괴 행위나 실수는 많은 페이지에 영향을 미치고 사소한 편집도 서버에 상당한 부하를 줄 수 있으므로 편집으로부터 보호됩니다. |
| 이 Lua 모듈은 약 165,000 페이지에서 사용됩니다. 큰 중단과 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 하위 페이지 또는 자체 모듈 샌드박스에서 변경 사항을 테스트해야 합니다.테스트된 변경 사항은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.변경사항을 구현하기 전에 대화 페이지에서 변경사항에 대해 논의하는 것을 고려합니다. |
"Time ago" 모듈은 {{Time ago}}을(를) 구현합니다.자세한 내용은 템플릿의 페이지를 참조하십시오.테스트 사례는 템플릿에서 확인할 수 있습니다.시간 전/테스트 사례.
템플릿 구현:[시간 전] 현지의 numberSpell, 예 아니오 나른한 짐 기능. numberSpell(아그) numberSpell = 요구하다('모듈:주문 번호')._본 돌아가다 numberSpell(아그) 끝. 기능. 예 아니오(아그) 예 아니오 = 요구하다('모듈:'예스노') 돌아가다 예 아니오(아그) 끝. 현지의 p = {} 입력한 텍스트 값을 숫자 값으로 변환하는 표입니다. 현지의 시간 텍스트 = { ['초'] = 1, ['분'] = 60, ['시간'] = 3600, ['일'] = 86400, ['''비공식'''] = 604800, ['''비공식'''] = 2629800, -- 365.25 * 24 * 60 * 60 / 12 ['년'] = 31557600 } 출력에 사용할 수 있는 단위의 표가 들어 있는 표입니다. 현지의 시간 단위 = { [1] = { '세컨드, '초', "세컨드", "초" }, [60] = { '분', '분', "분", "분" }, [3600] = { '시간', '시간', "시간", "시간" }, [86400] = { '날', '일', "하루", "일" }, [604800] = { '주', '''비공식''', "주", "이웃는", 구성 단위 = 'w' }, [2629800] = { '월', '''비공식''', "월", "이웃는", 구성 단위 = 'm' }, [31557600] = { '년', '년', "연도", "년", 구성 단위 = 'y' } } 기능. p._본( 논병아리 ) 변수 초기화 현지의 랑그 = mw.언어.콘텐츠 언어 가져오기() 현지의 auto_ragnitude_num 현지의 최소_규모_숫자 현지의 규모의 = 논병아리.규모의 현지의 최소 진도의 = 논병아리.최소 진도의 현지의 숙청 = 논병아리.숙청 제거 매개 변수에 무언가(일반적으로 "예")가 입력되면 제거 링크 추가 한다면 숙청 그리고나서 숙청 = <span class="sysloglinks">([' .. mw.제목.현재 제목 가져오기():전체 URL('action=dll') .. 숙청])'/span' 또 다른 숙청 = '' 끝. 입력한 타임스탬프가 올바른지 확인합니다.그렇지 않으면 오류 메시지를 표시합니다. 현지의 성공., 입력 시간 = pcall( 랑그.formatDate, 랑그, 'xnU', 논병아리[1] ) 한다면 것은 아니다. 성공. 그리고나서 돌아가다 '<strong class="error"> 오류: 첫 번째 매개 변수를 날짜 또는 시간으로 구문 분석할 수 없습니다.'/strong' 끝. 현재 시간과 입력된 시간의 차이와 절대값을 저장합니다. 현지의 시간차 = 랑그:formatDate( 'xnU' ) - 입력 시간 현지의 absTimeDiff = 수학, 수학, 수학 시험답( 시간차 ) 한다면 규모의 그리고나서 auto_ragnitude_num = 0 최소_규모_숫자 = 시간 텍스트[규모의] 또 다른 인수로 지정되지 않은 경우 적절한 시간 단위를 계산합니다. 현지의 오토 어그니튜드 데이터 = { { 요소 = 2, 암암 = 31557600 }, { 요소 = 2, 암암 = 2629800 }, { 요소 = 2, 암암 = 86400 }, { 요소 = 2, 암암 = 3600 }, { 요소 = 2, 암암 = 60 } } 위해서 _, t 에 짝을 짓다( 오토 어그니튜드 데이터 ) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 한다면 absTimeDiff / t.암암 >= t.요소 그리고나서 auto_ragnitude_num = t.암암 브레이크. 끝. 끝. auto_ragnitude_num = auto_ragnitude_num 또는 1 한다면 최소 진도의 그리고나서 최소_규모_숫자 = 시간 텍스트[최소 진도의] 또 다른 최소_규모_숫자 = -1 끝. 끝. 한다면 것은 아니다. 최소_규모_숫자 그리고나서 잘못된 크기를 입력한 경우 기본값은 초입니다. 최소_규모_숫자 = 1 끝. 현지의 result_num 현지의 매그니튜드_num = 수학.max( 최소_규모_숫자, auto_ragnitude_num ) 현지의 구성 단위 = 시간 단위[매그니튜드_num].구성 단위 한다면 구성 단위 그리고. absTimeDiff >= 864000 그리고나서 현지의 날짜. = 요구하다('모듈:날짜')._날짜 현지의 입력 = 랑그:formatDate('Y-m-d H:i:s', 논병아리[1]) 날짜는 정리 날짜가 필요합니다. 입력 = 날짜.(입력) 한다면 입력 그리고나서 현지의 이드 한다면 입력.시간 == 0 그리고. 입력.극히 작은 == 0 그리고나서 이드 = '현재 날짜' 또 다른 이드 = '현재 날짜 시간' 끝. result_num = (날짜.(이드) - 입력):나이(구성 단위) 끝. 끝. result_num = result_num 또는 수학.플로어 ( absTimeDiff / 매그니튜드_num ) 현지의 구두점_키, 접미사 한다면 시간차 >= 0 그리고나서 과거 한다면 result_num == 1 그리고나서 구두점_키 = 1 또 다른 구두점_키 = 2 끝. 한다면 논병아리.전에 == '' 그리고나서 접미사 = '' 또 다른 접미사 = ' ' .. (논병아리.전에 또는 'ago') 끝. 또 다른 미래 한다면 논병아리.전에 == '' 그리고나서 접미사 = '' 한다면 result_num == 1 그리고나서 구두점_키 = 1 또 다른 구두점_키 = 2 끝. 또 다른 접미사 = 시간' 한다면 result_num == 1 그리고나서 구두점_키 = 3 또 다른 구두점_키 = 4 끝. 끝. 끝. 현지의 결과_단위 = 시간 단위[ 매그니튜드_num ][ 구두점_키 ] 해당하는 경우 숫자를 단어로 변환합니다. 현지의 철자를 외우다 = 논병아리.철자를 써넣다 현지의 철자법_out_max = 수에 달하여(논병아리.철자법의 최대치) 현지의 result_num_text 한다면 철자를 외우다 그리고. ( ( 철자를 외우다 == '자동' 그리고. 1 <= result_num 그리고. result_num <= 9 그리고. result_num <= ( 철자법_out_max 또는 9 ) ) 또는 ( 예 아니오( 철자를 외우다 ) 그리고. 1 <= result_num 그리고. result_num <= 100 그리고. result_num <= ( 철자법_out_max 또는 100 ) ) ) 그리고나서 result_num_text = numberSpell( result_num ) 또 다른 result_num_text = 끈으로 묶는( result_num ) 끝. 숫자 또는 문자열 현지의 숫자로 표시된 = 논병아리.숫자의 현지의 결과 = "" 한다면 숫자로 표시된 그리고나서 결과 = 끈으로 묶는( result_num ) 또 다른 결과 = result_num_text .. ' ' .. 결과_단위 .. 접미사 접미사에 대한 공백이 이전에 추가되었습니다. 끝. 돌아가다 결과 .. 숙청 끝. 기능. p.주된( 틀 ) 현지의 논병아리 = 요구하다( '모듈:인수' ).args를 얻다( 틀, { valueFunc = 기능.( k, v ) 한다면 v 그리고나서 v = v:경기( '^%s*(.)%s*