사용자:현지 시간 내 Gary/코멘트.js
< 사용자:가리
| 이 페이지에 삽입한 코드는 계정을 손상시킬 수 있는 악의적인 내용을 포함할 수 있다. "importScript" 또는 "iuscript"가 있는 다른 페이지에서 스크립트를 가져오는 경우 다른 사용자가 변경할 수 있는 원격 스크립트를 동적으로 로드하게 된다는 점에 유의하십시오. 이 페이지에 추가하는 코드가 안전한지 확실하지 않으면 해당 마을 펌프에 문의하십시오. 이 페이지를 미리 볼 때 코드가 실행될 것이다. |
| 이 사용자 스크립트는 User:에 문서 페이지가 있는 것 같다.개리/현지 시간 코멘트 |
/** * 현지 시간 내 의견 * * 설명: * [조정된 범용 시간 UTC] 기반 시간 및 날짜 변경, * 서명에 사용되는 것과 같이, 현지 시간에 상대적인 것. * * 설명서: * [[위키피디아:현지 시간 내 주석]] */ $(() => { /** * 숫자가 부여되면, 필요한 경우 선행 0을 추가하여 최종 번호를 추가하십시오. *는 두 개의 문자를 가지고 있다. * * @param {number} 숫자 * @returns {string} 필요한 경우 선행 0을 가진 숫자. */ 기능을 하다 addLeadingZero(번호를 붙이다) { 경시하다 numberArg = 번호를 붙이다; 만일 (numberArg < 10) { 돌아오다 `0${numberArg}`; } 돌아오다 numberArg; } 기능을 하다 convertMonthToNumber(월) { 돌아오다 새로운 날짜(`${월} 1, 2001`).월을 얻다(); } 기능을 하다 getDates(시간) { 경시하다 [, 올드아워, 올드미닛, 올드데이, 구월, 올드이어] = 시간; // 오늘 경시하다 금일 = 새로운 날짜(); // 어제 경시하다 어제 = 새로운 날짜(); 어제.날짜를 설정하다(어제.getDate() - 1); // 내일 경시하다 내일 = 새로운 날짜(); 내일.날짜를 설정하다(내일.getDate() + 1); // 입력한 날짜를 설정하십시오. 경시하다 뉴타임 = 새로운 날짜(); 뉴타임.setUTCFull 연도(올드이어, convertMonthToNumber(구월), 올드데이); 뉴타임.세투쿠르스(올드아워); 뉴타임.setUTCMinutes(올드미닛); 돌아오다 { 시간: 뉴타임, 금일, 내일, 어제 }; } /** * 단수 또는 복수 단어를 사용할지 결정하여 사용하십시오. * * @param {string} 용어 원래 용어 * @param {number} 항목 개수 * @param {string} 복수형 항 * @returns {string} 사용할 단어 */ 기능을 하다 복수형으로 하다(용어, 수를 세다, 복수형의 = 무효의) { 하게 하다 다모나르그 = 복수형의; // 고유한 복수형 단어를 찾을 수 없으므로 일반 단어를 사용하십시오. 만일 (!다모나르그) { 다모나르그 = `${용어}s의; } // 항목은 하나뿐이니 단수어를 쓰세요. 만일 (수를 세다 === 1) { 돌아오다 용어; } // 여러 항목이 있으므로 복수 단어를 사용하십시오. 돌아오다 다모나르그; } 계급 평.인로컬타임 { 건설업자() { 이.언어 = ''; 이.로컬 코멘트 = {}; /** * 설정 */ 이.설정(); 이.언어 = 이.setDefaultSetting( '언어', 이.로컬 코멘트.언어 ); // 이러한 값은 문서에도 반영된다. // https://en.wikipedia.org/wiki/Wikipedia:Comments_in_Local_Time#Default_settings 이.setDefaultSetting({ dateDifference: 진실의, 날짜 형식: 'dmy', Day OfWeek: 진실의, dropDays: 0, Drop Months: 0, 타임퍼스트: 진실의, 24시간: 거짓의, }); } 시간 조정(오리지널Timestamp, 샅샅이 뒤지다) { 경시하다 { 시간, 금일, 내일, 어제 } = getDates( 오리지널Timestamp.짝을 맞추다(샅샅이 뒤지다) ); // 날짜 패턴과 일치하는 문자열을 찾았지만 찾을 수 없음 // 날짜 개체로 변환됨. 변경 사항 없이 반품하십시오. 만일 (숫자.isNaN(시간)) { 돌아오다 [오리지널Timestamp, '']; } 경시하다 날짜를 잡다 = 이.dateText 결정({ 시간, 금일, 내일, 어제, }); 경시하다 { 오전의, 시간 } = 이.get hours(시간); 경시하다 극히 작은 = addLeadingZero(시간.getMinutes()); 경시하다 최종 시간 = `${시간}:${극히 작은}${오전의}`; 하게 하다 반환 날짜; // 시간 오프셋을 결정한다. 경시하다 utc값 = (-1 * 시간.getTimezoneOffset()) / 60; 경시하다 utcOffset = utc값 >= 0 ? `+${utc값}` : `−${수학.복근(utc값.고정된(1))}`; 만일 (이.로컬 코멘트.타임퍼스트) { 반환 날짜 = `${최종 시간}, ${날짜를 잡다} (UTC)${utcOffset})`; } 다른 { 반환 날짜 = `${날짜를 잡다}, ${최종 시간} (UTC)${utcOffset})`; } 돌아오다 { 반환 날짜, 시간 }; } convertNumberTo Month(번호를 붙이다) { 돌아오다 [ 이.언어.1월, 이.언어.2월, 이.언어.3월, 이.언어.4월, 이.언어.5월, 이.언어.6월, 이.언어.7월, 이.언어.8월, 이.언어.9월, 이.언어.10월, 이.언어.11월, 이.언어.12월, ][번호를 붙이다]; } 작성날짜 텍스트({ 낮의, 월, 시간, 금일, 연도 }) { // 요일 계산 경시하다 dayNames = [ 이.언어.일요일, 이.언어.월요일, 이.언어.화요일, 이.언어.수요일, 이.언어.목요일, 이.언어.금요일, 이.언어.토요일, ]; 경시하다 데이 오브 더 위크 = dayNames[시간.getDay()]; 하게 하다 기술 차이 = ''; 하게 하다 지난 = ''; // 상대적 서술적 차이 생성 만일 (이.로컬 코멘트.dateDifference) { ({ 기술 차이, 지난 } = 이.createRate( 금일, 시간 )); } 경시하다 월 이름 = 이.convertNumberTo Month(시간.월을 얻다()); // 사용자 기본 설정에 따라 날짜 형식 지정 하게 하다 포맷된 날짜 = ''; 바꾸다 (이.로컬 코멘트.날짜 형식.toLowerCase()) { 케이스 'dmy': 포맷된 날짜 = `${낮의} ${월 이름} ${연도}`; 부숴뜨리다; 케이스 'mdy': 포맷된 날짜 = `${월 이름} ${낮의}, ${연도}`; 부숴뜨리다; 체납: 포맷된 날짜 = `${연도}-${월}-${addLeadingZero(낮의)}`; } 하게 하다 포맷된 DayOfTheWeek = ''; 만일 (이.로컬 코멘트.Day OfWeek) { 포맷된 DayOfTheWeek = `, ${지난}${데이 오브 더 위크}`; } 돌아오다 포맷된 날짜 + 포맷된 DayOfTheWeek + 기술 차이; } /** * 상대 날짜 데이터를 생성한다. * * 오늘 @param {Date} * @param {Date} 시간 설명의 타임스탬프 * @returns {Object.< 문자열, *>} 상대 날짜 데이터 */ createRate(금일, 시간) { /** * 오늘과의 시간 차이(밀리초) * * @type {number} */ 경시하다 밀리초전에 = 금일.gettime() - 시간.gettime(); /** * 우리가 전시할 일수. 꼭 그런 것은 아니다. * 총 며칠 전. * * @type {number} */ 하게 하다 데이즈아고 = 수학.복근(수학.둥글게(밀리초전에 / 1000 / 60 / 60 / 24)); 경시하다 { 차이워드, 지난 } = 이.상대 텍스트({ 데이즈아고, 밀리초전에, }); // 연도와 월을 계산하는 이 방법은 정확하지 않다. 하지만 // 1월 1일 + 델타일을 사용한 이전 방법보다 낫다. // 두 번째 델타 월을 // 28일밖에 남지 않은 2월. 이 방법은 보통 다음보다 크지 않다. // 아주 먼 데이트를 제외하고 하루 쉰다. /** * 몇 개월 전, 우리가 전시할 수 있는 숫자. 꼭 그렇지는 않다. * 총 몇 달 전. * * @type {number} */ 하게 하다 monthsAgo = 수학.마루를 깔다((데이즈아고 / 365) * 12); /** * 몇 개월 전의 총 시간. * * @type {number} */ 경시하다 토탈월사고 = monthsAgo; /** * 우리가 전시할 수 있는 몇 년 전의 숫자. 꼭 그런 것은 아니다. * 총 몇 년 전. * * @type {number} */ 하게 하다 yearsAgo = 수학.마루를 깔다(토탈월사고 / 12); 만일 (토탈월사고 < 이.로컬 코멘트.Drop Months) { yearsAgo = 0; } 다른 만일 (이.로컬 코멘트.Drop Months > 0) { monthsAgo = 0; } 다른 { monthsAgo -= yearsAgo * 12; } 만일 (데이즈아고 < 이.로컬 코멘트.dropDays) { monthsAgo = 0; yearsAgo = 0; } 다른 만일 (이.로컬 코멘트.dropDays > 0 && 토탈월사고 >= 1) { 데이즈아고 = 0; } 다른 { 데이즈아고 -= 수학.마루를 깔다((토탈월사고 * 365) / 12); } 경시하다 설명부품 = []; // 추가해야 할 연도별 텍스트가 있다. 만일 (yearsAgo > 0) { 설명부품.밀다( `${yearsAgo} ${복수형으로 하다( 이.언어.연도, yearsAgo, 이.언어.몇 해 )}` ); } // 추가해야 할 월 텍스트가 있다. 만일 (monthsAgo > 0) { 설명부품.밀다( `${monthsAgo} ${복수형으로 하다( 이.언어.월, monthsAgo, 이.언어.몇달. )}` ); } // 추가할 날짜 텍스트가 있다. 만일 (데이즈아고 > 0) { 설명부품.밀다( `${데이즈아고} ${복수형으로 하다( 이.언어.낮의, 데이즈아고, 이.언어.날들 )}` ); } 돌아오다 { 기술 차이: ` (${설명부품.합류하다( ', ' )} ${차이워드})`, 지난, }; } dateText 결정({ 시간, 금일, 내일, 어제 }) { // 출력할 날짜 비트를 설정하십시오. 경시하다 연도 = 시간.getFullYear(); 경시하다 월 = addLeadingZero(시간.월을 얻다() + 1); 경시하다 낮의 = 시간.getDate(); // '오늘' 또는 '어제'를 반환하십시오. 만일 ( 연도 === 금일.getFullYear() && 월 === addLeadingZero(금일.월을 얻다() + 1) && 낮의 === 금일.getDate() ) { 돌아오다 이.언어.오늘; } 만일 ( 연도 === 어제.getFullYear() && 월 === addLeadingZero(어제.월을 얻다() + 1) && 낮의 === 어제.getDate() ) { 돌아오다 이.언어.어제; } 만일 ( 연도 === 내일.getFullYear() && 월 === addLeadingZero(내일.월을 얻다() + 1) && 낮의 === 내일.getDate() ) { 돌아오다 이.언어.투모로우; } 돌아오다 이.작성날짜 텍스트({ 낮의, 월, 시간, 금일, 연도 }); } get hours(시간) { 하게 하다 오전의; 하게 하다 시간 = 파스인트(시간.get hours(), 10); 만일 (이.로컬 코멘트.24시간) { 오전의 = ''; 시간 = addLeadingZero(시간); } 다른 { // 날짜에 따라 오전 또는 오후 출력 오전의 = 시간 <= 11 ? 'am' : '오후'; 만일 (시간 > 12) { 시간 -= 12; } 다른 만일 (시간 === 0) { 시간 = 12; } } 돌아오다 { 오전의, 시간 }; } 상대 텍스트({ 데이즈아고, 밀리초전에 }) { 하게 하다 차이워드 = ''; 하게 하다 지난 = ''; // 날짜는 과거. 만일 (밀리초전에 >= 0) { 차이워드 = 이.언어.이전에; 만일 (데이즈아고 <= 7) { 지난 = `${이.언어.지난} `; } // 날짜는 미래다. } 다른 { 차이워드 = 이.언어['지금부터']; 만일 (데이즈아고 <= 7) { 지난 = `${이.언어.이} `; } } 돌아오다 { 차이워드, 지난 }; } 바꾸기텍스트(마디를 짓다, 샅샅이 뒤지다) { 만일 (!마디를 짓다) { 돌아오다; } // 텍스트 노드인지 확인하십시오. 만일 (마디를 짓다.nodeType === 3) { 하게 하다 부모 = 마디를 짓다.parentNode; 경시하다 parentNodeName = 부모.노드 이름; 만일 (['코드', 'PRE'].포함한다(parentNodeName)) { 돌아오다; } 경시하다 가치를 매기다 = 마디를 짓다.노드값; 경시하다 성냥 = 가치를 매기다.짝을 맞추다(샅샅이 뒤지다); // jQuery를 사용하기보다는 DOM을 직접 조작하는 것을 고수한다. // 그 후 100% 이상의 속도 향상을 얻었다. 만일 (성냥) { // 이 노드에서 찾은 첫 번째 타임스탬프에만 작업하십시오. 이것은 // 실제로 두 개 또는 두 개가 있는 상황에 대한 일시적인 해결책 // 동일한 노드의 타임스탬프 수 증가. 경시하다 [짝을 맞추다] = 성냥; 경시하다 포지션 = 가치를 매기다.샅샅이 뒤지다(샅샅이 뒤지다); 경시하다 문자열길이 = 짝을 맞추다.토스트링().길이; 경시하다 매치 전 = 가치를 매기다.하위 문자열(0, 포지션); 경시하다 애프터매치 = 가치를 매기다.하위 문자열(포지션 + 문자열길이); 경시하다 { 반환 날짜, 시간 } = 이.시간 조정( 짝을 맞추다.토스트링(), 샅샅이 뒤지다 ); 경시하다 타임스탬프 = 시간 ? 시간.gettime() : ''; // "timestamp" 속성은 마이크로포맷에 사용되는가? 경시하다 스판하다 = 문서화하다.createElement('스팬'); 스판하다.className = '지역별 의견'; 스판하다.문체를 하다.글꼴 크기 = '95%'; 스판하다.문체를 하다.화이트 스페이스 = '노랩'; 스판하다.setAttribute('timestamp', 타임스탬프); 스판하다.칭호를 붙이다 = 짝을 맞추다; 스판하다.덧셈을(문서화하다.CreateTextNode(반환 날짜)); 부모 = 마디를 짓다.parentNode; 부모.대체 차일드(스판하다, 마디를 짓다); 경시하다 전에 = 문서화하다.createElement('스팬'); 전에.className = '현지 이전 발언'; 전에.덧셈을(문서화하다.CreateTextNode(매치 전)); 경시하다 다음에 = 문서화하다.createElement('스팬'); 다음에.className = '지역별 사후 설명'; 다음에.덧셈을(문서화하다.CreateTextNode(애프터매치)); 부모.삽입 전(전에, 스판하다); 부모.삽입 전(다음에, 스판하다.넥시블링); } } 다른 { 경시하다 아이들. = []; 하게 하다 어린아이의; [어린아이의] = 마디를 짓다.차일드노드; 하는 동안에 (어린아이의) { 아이들..밀다(어린아이의); 어린아이의 = 어린아이의.넥시블링; } // 아이들을 반복해서 반복해서 이 func를 다시 작동시켜라. 아이들..각을 위해((아이2) => { 이.바꾸기텍스트(아이2, 샅샅이 뒤지다); }); } } 달리다() { 만일 ( ['', '미디어위키', '특수'].포함한다( mw.구성.얻다('wgCanonicalNamespace') ) ) { 돌아오다; } // 비활성화된 URL을 확인하십시오. 경시하다 isDisableUrl = ['행동=역사'].약간의((disableUrl) => 문서화하다.위치.href.포함한다(disableUrl) ); 만일 (isDisableUrl) { 돌아오다; } 이.바꾸기텍스트( 문서화하다.querySelector('.mw-파서-출력'), /(\d{1,2}):(\d{2}), (\d{1,2}) ([A-Z][a-z]+) (\d{4} \(UTC\)/ ); } setDefaultSetting(...아그) { // 논쟁은 없다. 만일 (아그.길이 === 0) { 돌아오다 거짓의; } // 첫 번째 arg는 물체이므로, 그 데이터를 바로 위에 설정하기만 하면 된다. // 설정 객체. {설정 1: true, 설정 2: false}과 같은 경우 만일 (활자의 아그[0] === '목표') { 경시하다 [설정] = 아그; // 각 설정을 반복하십시오. 오브젝트.열쇠들.(설정).각을 위해((이름을 붙이다) => { 경시하다 가치를 매기다 = 설정[이름을 붙이다]; 만일 (활자의 이.로컬 코멘트[이름을 붙이다] === '정의되지 않음') { 이.로컬 코멘트[이름을 붙이다] = 가치를 매기다; } }); 돌아오다 설정; } // 첫 번째 arg는 문자열이므로 첫 번째 arg를 설정 키로 사용하십시오. // 및 두 번째 arg를 설정할 값. 경시하다 [이름을 붙이다, 설정] = 아그; 만일 (활자의 이.로컬 코멘트[이름을 붙이다] === '정의되지 않음') { 이.로컬 코멘트[이름을 붙이다] = 설정; } 돌아오다 이.로컬 코멘트[이름을 붙이다]; } /** * 스크립트 설정을 설정하십시오. * * @pair {undefined} */ 설정() { // 사용자가 사용자 지정 설정을 했으므로 해당 설정을 사용하십시오. 만일 (창문의.로컬 코멘트) { 이.로컬 코멘트 = 창문의.로컬 코멘트; } /** *언어 * * 이 스크립트의 로컬라이징 * 이 스크립트를 로컬로 설정하려면 아래 용어를 변경하십시오. * 콜론의 오른쪽, 해당 언어에 사용되는 올바른 용어로. * * 예를 들어, 프랑스어에서는 * * '오늘' : '오늘' * *일 것이다 * * '오늘' : "아우주르드 후이" */ 이.로컬 코멘트.언어 = { // 관련 용어 오늘: '오늘', 어제: '어제', 투모로우: '내일', 지난: '마지막', 이: '이것', // 요일 일요일: '일요일', 월요일: '월요일', 화요일: '화요일', 수요일: '수요일', 목요일: '목요일', 금요일: '금요일', 토요일: '토요일', // 년도 월 1월: '1월', 2월: '2월', 3월: '3월', 4월: '4월', 5월: '5월', 6월: '준', 7월: '7월', 8월: '8월', 9월: '9월', 10월: '10월', 11월: '11월', 12월: '12월', // 차이 단어 이전에: '아고', '지금부터': '지금부터', // 날짜 구문 연도: '년', 몇 해: '년', 월: '월', 몇달.: 'months', 낮의: '날', 날들: '일', }; } } // 이 스크립트를 이미 실행했는지 확인하십시오. 만일 (창문의.평.InLocalTimeWasRun) { 돌아오다; } 창문의.평.InLocalTimeWasRun = 진실의; 경시하다 평.인로컬타임 = 새로운 평.인로컬타임(); 평.인로컬타임.달리다(); });