:날짜/설명문서

그레고리력 날짜를 입력 받아서 지정한 형식으로 출력하는 틀입니다. 이 틀은 첫째 매개변수로 날짜를, 둘째 매개변수로 출력될 형식을, 셋째 매개변수로 링크 생성 여부를 입력받습니다.

사용법편집

간단한 사용법편집

다음과 같이 쓰면 문서에 지정한 연월일이 표시됩니다. (예:2000년 1월 23일)

입력 {{날짜|2000-01-23}}
결과 2000년 1월 23일

연월일에 링크를 걸 수 있습니다.

입력 {{날짜|2000-01-23|링크}}
결과 2000년 1월 23일

날짜 매개변수 없이 풀어 쓰면 자동으로 현재 날짜가 입력됩니다.

입력 {{풀기:날짜}}
결과 2024년 11월 22일

매개변수 사용편집

이 틀에서 사용하는 매개변수는 다음과 같습니다.

{{날짜 | (날짜 입력) | (출력 형식) | (링크 여부)}}
  • 첫째 매개변수로는 날짜를 입력합니다. 필수 사항. 날짜 입력 형식과 범위 문단 참고.
  • 둘째 매개변수로 출력 형식을 지정합니다. 생략 가능. 출력 형식 지정 문단 참고.
  • 셋째 매개변수에 링크를 넣으면 출력되는 날짜에 링크가 걸립니다. 둘째 매개변수에서 출력 형식을 생략할 경우 둘째에 링크를 넣어도 됩니다. 날짜에 링크 생성 문단 참고.

날짜 입력 형식과 범위편집

날짜 입력 형식편집

기본 입력 형식은 YYYY-MM-DD형식(연도 4자리-월 2자리-일 2자리)입니다. 입력 가능한 모든 형식은 다음 표와 같습니다. 인식하지 못하는 형식으로 입력할 경우 링크나 출력 형식이 적용되지 않고 입력한 그대로 출력됩니다.

입력 형식 예시 비고
YYYY-MM-DD 2000-01-23 권장. 인식에 드는 서버 부하가 가장 작음.
YYYY-MM 2000-01 이 형식으로 입력하면 출력시 일자가 생략됨.
YYYY 2000 이 형식으로 입력하면 출력시 월, 일이 생략됨.
YYYY년 M월 D일 2000년 1월 23일 인식에 드는 서버 부하가 큼.
YYYY년M월D일 2000년1월23일
YYYY년 M월 2000년 1월 인식에 드는 서버 부하가 큼. 출력시 일자가 생략됨.
YYYY년M월 2000년1월
YYYY년 2000년 출력시 월, 일이 생략됨.
YYYY. M. D. 2000. 1. 23. 인식에 드는 서버 부하가 큼. 맨 끝의 점까지 입력해야 인식함.
YYYY.M.D. 2000.1.23.
YYYY. M. 2000. 1. 인식에 드는 서버 부하가 큼. 맨 끝의 점까지 입력해야 인식함. 출력시 일자가 생략됨.
YYYY.M. 2000.1.
YYYY. 2000. 출력시 월, 일이 생략됨.

※위 형식에서 MMM으로, DDD로 바꾸어 쓸 수 있습니다. 그 반대도 됩니다. 단, MMD 조합이나 MDD 조합은 쓸 수 없습니다.

날짜 입력 범위편집

입력할 수 있는 날짜 범위는 1000년 1월 1일부터 9999년 12월 31일까지입니다. 기원전 1년~ 기원후 999년 범위도 입력 및 출력이 가능하긴 하나 제한점이 있습니다(기술적 내용 문단 참조).

다음 날짜를 입력하면 링크나 출력 형식이 적용되지 않고 입력한 그대로 출력됩니다.

  • 윤년이 아닌 해의 2월 29일.
  • 과거 율리우스력으로 윤년이었으나 현대 그레고리력으로 윤년이 아닌 해의 2월 29일(예:1500년 2월 29일).
  • 그 달에 없는 일자(예:4월 31일).

출력 형식 지정편집

출력 형식으로 지정할 수 있는 값은 다음과 같습니다.

지정 값 출력 비고
연월일 형식 출력
YYYY년 M월 D일 (값 미지정) 일자를 입력한 경우.
YYYY년 M월 (값 미지정) 일자를 입력하지 않은 경우.
YYYY년 (값 미지정) 월을 입력하지 않은 경우.
연월 YYYY년 M월 월을 입력한 경우.
YYYY년 월을 입력하지 않은 경우.
월일 M월 D일 일자를 입력한 경우.
M월 일자를 입력하지 않은 경우.
월을 입력하지 않은 경우(출력 없음).
YYYY년
M월 월을 입력한 경우.
월을 입력하지 않은 경우(출력 없음).
D일 일자를 입력한 경우.
일자를 입력하지 않은 경우(출력 없음).
점 형식 출력
YYYY. M. D. 일자를 입력한 경우.
YYYY. M. 일자를 입력하지 않은 경우.
YYYY. 월을 입력하지 않은 경우.
점연월 YYYY. M. 월을 입력한 경우.
YYYY. 월을 입력하지 않은 경우.
점월일 M. D. 일자를 입력한 경우.
M. 일자를 입력하지 않은 경우.
월을 입력하지 않은 경우(출력 없음).
점연 YYYY.
점월 M. 월을 입력한 경우.
월을 입력하지 않은 경우(출력 없음).
점일 D. 일자를 입력한 경우.
일자를 입력하지 않은 경우(출력 없음).
ISO 8601 형식 출력
iso YYYY-MM-DD 일자를 입력한 경우.
YYYY-MM 일자를 입력하지 않은 경우.
YYYY 월을 입력하지 않은 경우.
iso연월 YYYY-MM 월을 입력한 경우.
YYYY 월을 입력하지 않은 경우.
iso연 YYYY

※'연' 대신 '년'을 넣거나 'iso' 대신 'ISO'를 넣어도 올바르게 동작합니다.

날짜에 링크 생성편집

셋째 매개변수에 링크 문자열을 넣으면 각 연월일에 링크가 생성됩니다. 출력 형식을 생략할 경우 둘째 매개변수에 문자열을 넣어도 동작합니다. 생성되는 링크는 다음과 같습니다.

  • 연도에는 [[YYYY년]]
  • 월에는 [[YYYY년 M월]] (단, 연도가 생략된 출력에서는 [[M월]])
  • 일에는 [[M월 D일]]

사용 예편집

날짜만 넣으면 기본값으로 'YYYY년 M월 D일' 형식으로 출력됩니다. 단, 월이나 일자를 입력하지 않으면 각각 'YYYY년' 또는 'YYYY년 M월' 형식으로 출력됩니다.

입력 결과
{{날짜|2000-01-23}} 2000년 1월 23일
{{날짜|2000-01}} 2000년 1월
{{날짜|2000}} 2000년

날짜 다음 매개변수로 출력 형식을 지정하고 특정 요소를 생략할 수 있습니다.

입력 결과
{{날짜|2000-01-23|연월}} 2000년 1월
{{날짜|2000-01-23|일}} 23일
{{날짜|2000-01-23|점}} 2000. 1. 23.
{{날짜|2000-01-23|점월일}} 1. 23.
{{날짜|2000-01-23|iso}} 2000-01-23
{{날짜|2000-01-23|iso연}} 2000

월이나 일자를 입력하지 않으면 출력에서 지정해도 생략됩니다.

입력 결과
{{날짜|2000-01}} 2000년 1월
{{날짜|2000-01|월일}} 1월
{{날짜|2000-01|일}}
{{날짜|2000|연월}} 2000년
{{날짜|2000|월일}}

날짜 다음, 또는 출력 형식 다음 매개변수로 '링크'를 넣으면 링크가 생깁니다.

입력 결과
{{날짜|2000-01-23|링크}} 2000년 1월 23일
{{날짜|2000-01-23|연|링크}} 2000년
{{날짜|2000-01-23|점연월|링크}} 2000. 1.
{{날짜|2000-01-23|iso|링크}} 2000-01-23

월일 또는 월 형식 출력에서는 월 링크에 연도가 들어가지 않습니다.

입력 결과
{{날짜|2000-01-23|월일|링크}} 1월 23일
{{날짜|2000-01-23|점월|링크}} 1.

한글로 쓴 날짜, 연월일을 점으로 쓴 날짜도 인식 가능합니다. 그러나 인식에 소모되는 서버 부하가 YYYY-MM-DD 형식에 비해 조금 더 크므로 사용을 권장하지는 않습니다.

이 형식은 연월일 사이를 모두 붙이거나 모두 뗀 경우만 인식합니다. 점 형식은 맨 끝의 점까지 써야 합니다. 인식하지 못하는 경우 링크나 출력 형식이 적용되지 않고 입력한 그대로 출력됩니다.

올바른 입력
입력 결과
{{날짜|2000년1월23일|링크}} 2000년 1월 23일
{{날짜|2000. 01. 23.|링크}} 2000년 1월 23일
{{날짜|2000년 01월|점|링크}} 2000. 1.
{{날짜|2000.1.|점|링크}} 2000. 1.
{{날짜|2000년|iso|링크}} 2000
잘못된 입력
입력 결과
{{날짜|2000년 1월23일|링크}} 2000년 1월23일
{{날짜|2000년1월01일|링크}} 2000년1월01일
{{날짜|2000. 1. 23|iso}} 2000. 1. 23

틀을 풀어서 쓸 수도 있습니다.

입력 결과
{{풀기:날짜|2000-01-23}} 2000년 1월 23일
실제 입력되는 코드: 2000년 1월 23일
{{풀기:날짜|2000-01-23|링크}} 2000년 1월 23일
실제 입력되는 코드: [[2000년]] [[2000년 1월|1월]] [[1월 23일|23일]]
{{풀기:날짜|2000-01-23|월|링크}} 1월
실제 입력되는 코드: [[1월]]

풀어 쓰면서 날짜를 입력하지 않으면 현재 날짜가 자동으로 입력됩니다.

입력 결과
{{풀기:날짜}} 2024년 11월 22일
실제 입력되는 코드: 2024년 11월 22일
{{풀기:날짜||점월일|링크}} 11. 22.
실제 입력되는 코드: [[11월|11.]] [[11월 22일|22.]]

날짜 자동 입력은 풀어 쓸 때에만 적용됩니다. 끼워넣으면서 날짜를 입력하지 않으면 오류가 발생합니다.

잘못된 사용
입력 결과
{{날짜}} 날짜 틀 오류: 날짜 값이 입력되지 않음.
{{날짜||링크}} 날짜 틀 오류: 날짜 값이 입력되지 않음.

유의 사항편집

  • 첫째 매개변수(날짜)를 입력하지 않으면 오류가 발생하고, 해당 글은 숨은 분류인 분류:날짜 매개변수 없이 날짜 틀이 쓰인 글에 들어갑니다. 단, 풀어 쓰면 오류 없이 현재 날짜를 출력합니다.
  • 인식할 수 없는 날짜 입력 형식은 문자열 그대로 출력됩니다. 링크는 생성되지 않습니다.

기술적 내용편집

이 문단의 내용은 이 틀을 고치려는 사람과 이 틀을 다른 틀에서 메타 틀로 쓰려는 사람을 위한 것입니다.

  • 기원전 1년(=0년)~ 기원후 999년 범위의 날짜를 입력하려면 연도 앞에 0을 붙여서 0100 같은 식으로 입력합니다. 단, 출력에서도 앞의 0이 표시되며, 연도·월 링크도 그렇게 되는 문제점이 있습니다.
  • 틀 수정시에는 연도에 따라 #time 함수의 동작이 달라짐에 주의해야 합니다. 0년~99년, 100년~110년, 111년~1752년 등의 범위는 1753년 이후와 다르게 처리되는 경우가 있습니다. ParserFunctions(영어) 참고.
  • 이전에 사용하던 방식인, 매개변수 '링크'의 값을 지정하는 방법도 사용 가능합니다. 매개변수 '링크'가 정의되고 빈 값이 아니면 링크로 출력합니다.
  • 메타 틀이 많이 사용되었습니다. 이는 매개변수를 이용해 틀과 특수 함수의 중복 사용을 없애기 위함입니다. 틀의 중복 사용은 최소화하였으나 틀과 특수 함수의 확장(expansion)이 많이 일어납니다. 미디어위키에서 허용하는 최대 확장 깊이는 40단계인데 이 틀은 2011년 1월 17일 기준판에서 최대 약 10단계의 확장을 사용합니다.
  • 이 틀을 메타 틀로 사용할 경우 위에서 언급한 확장 단계 문제 및 한글 날짜 입력 인식의 서버 부하를 고려해야 합니다. 이 틀은 YYYY-MM-DD 형식 입력을 받으면 가벼운 편이지만 한글 날짜 입력을 받으면 상당히 무겁습니다.

메타 틀편집

이 틀에서 사용하는 메타 틀입니다.

주석 포함 코드편집

아래 코드는 2011년 2월 6일 17:40 (KST) 버전에 주석을 달아 놓은 것입니다. 불필요한 서버 처리를 막기 위해 실제 코드에는 주석을 넣지 않았습니다. 만약 이 틀을 수정한다면 아래 코드도 같이 수정하여 추후 다른 사람이 수정하기 쉽도록 도와주세요.

코드를 보려면 오른쪽 끝의 '보이기'를 누르세요.
{{{{{|안전풀기:}}}#if:{{{1|}}}<noinclude><!--매개변수 1 미지정이거나 비었으면 풀어쓰기 검사로...--></noinclude>
  |{{{{{|안전풀기:}}}#iferror:{{{{{|안전풀기:}}}#time:Y_m_d|{{{1}}} 12:00}}<noinclude><!--권장 입력 형식(YYYY-MM-DD 따위)일 경우 분기를 줄이기 위한 구문. #time에 12:00 붙인 것은 0년~2359년 사이 각 100년 단위별 00~59년의 YYYY 또는 YYYY. 형식 검출용(#time이 해당 범위를 YYYY가 아닌 hhmm으로 처리함).--></noinclude>
    |{{{{{|안전풀기:}}}#switch:x{{{{{|안전풀기:}}}padleft:|5|{{{1}}}}}<noinclude><!--연도 문자 검출 위한 스위치--></noinclude>
      |x{{{1}}}={{{{{|안전풀기:}}}#switch:x{{{1}}}<noinclude><!--0000~9999년 범위의 YYYY년 및 hhmm 범위의 YYYY. 형식 검출--></noinclude>
        |x{{{{{|안전풀기:}}}padleft:|4|{{{1}}}}}년
        |x{{{{{|안전풀기:}}}padleft:|4|{{{1}}}}}.={{{{{|안전풀기:}}}날짜/출력|1={{{1}}}|2={{{2|}}}|3={{{3|}}}|링크={{{링크|}}}|연월일입력={{{{{|안전풀기:}}}padleft:|4|{{{1}}}}}-01-00}}
        |{{{1}}}
       }}
      |x{{{{{|안전풀기:}}}padleft:|4|{{{1}}}}}년={{{{{|안전풀기:}}}날짜/연월일입력|1={{{1}}}|2={{{2|}}}|3={{{3|}}}|링크={{{링크|}}}|연도={{{{{|안전풀기:}}}padleft:|5|{{{1}}}}}|월수={{{{{|안전풀기:}}}날짜/연월일입력/월|1={{{1}}}|연도={{{{{|안전풀기:}}}padleft:|5|{{{1}}}}}|월=월}}|월=월|일=일}}<noinclude><!--연도 문자가 '년'이고 월이나 일이 있음.--></noinclude>
      |x{{{{{|안전풀기:}}}padleft:|4|{{{1}}}}}.={{{{{|안전풀기:}}}날짜/연월일입력|1={{{1}}}|2={{{2|}}}|3={{{3|}}}|링크={{{링크|}}}|연도={{{{{|안전풀기:}}}padleft:|5|{{{1}}}}}|월수={{{{{|안전풀기:}}}날짜/연월일입력/월|1={{{1}}}|연도={{{{{|안전풀기:}}}padleft:|5|{{{1}}}}}|월=.}}|월=.|일=.}}<noinclude><!--연도 문자가 '.'이고 월이나 일이 있음.--></noinclude>
      |{{{{{|안전풀기:}}}#ifeq:x{{{1}}}|x{{{{{|안전풀기:}}}padleft:|4|{{{1}}}}}<noinclude><!--hhmm 범위의 YYYY 형식 검출--></noinclude>
        |{{{{{|안전풀기:}}}날짜/출력|1={{{1}}}|2={{{2|}}}|3={{{3|}}}|링크={{{링크|}}}|연월일입력={{{1}}}-01-00}}
        |{{{1}}}
       }}
     }}
    |{{{{{|안전풀기:}}}날짜/출력|1={{{1}}}|2={{{2|}}}|3={{{3|}}}|링크={{{링크|}}}}}<noinclude><!--권장 입력 형식일 경우 #iferror에서 여기로 바로 넘어옴.--></noinclude>
   }}
  |{{{{{|안전풀기:}}}#if:{{{{{|풀기:}}}이름:0|x}}<noinclude><!--(풀어쓰기 검사) 매개변수 1 비었을 경우 끼워넣었으면 오류 출력하고 자동분류, 풀어썼으면 현재 날짜 풀기.--></noinclude>
    |<includeonly>{{오류|날짜 틀 오류: 날짜 값이 입력되지 않음.}}[[분류:날짜 매개변수 없이 날짜 틀이 쓰인 글|{{문서이름}}]]</includeonly>
    |{{{{{|안전풀기:}}}날짜/출력|{{{{{|안전풀기:}}}#timel:Y-m-d|now}}|2={{{2|}}}|3={{{3|}}}|링크={{{링크|}}}}}
   }}
}}<noinclude>
{{틀 설명문서}}
</noinclude>

넘겨주기편집

같이 보기편집