Programing/HTML

HTML <input> 시간 관련 타입 완전 정복: time, month, week, date, datetime-local

2025. 4. 26. 14:24
반응형

웹 폼에서 날짜와 시간을 입력받는 경우는 매우 많습니다. HTML5부터는 사용자 경험과 데이터 일관성을 높이기 위해 다양한 날짜/시간 입력 타입이 추가되었으며, 이들 타입은 기본적인 폼 처리뿐 아니라 예약 시스템, 달력 UI, 시간 기록 등 여러 실무 영역에서 핵심 기능으로 활용됩니다.

이 글은 <input>의 날짜/시간 관련 타입에 대해 기본 구조 → 고급 예제 → 자바스크립트 활용 → 심화 응용 순으로 설명하여 초보자도 글을 다 읽고 나면 준전문가 수준에 이를 수 있도록 구성했습니다.


🕒 1. <input type="time"> — 시:분 입력 전용

✅ 기본 개념

  • 시간(시:분)을 입력받기 위한 입력 필드
  • 초 단위는 입력할 수 없음 (HH:mm 포맷)
  • 기본적으로 사용자의 로컬 시간대를 따름

✅ 기본 사용 예

<label>예약 시간:</label>
<input type="time" name="appointment" />

💡 고급 사용 예 1: 최소/최대 시간 제한

<input type="time" min="09:00" max="18:00" required />

💡 고급 사용 예 2: 시간 간격 설정

<!-- 15분 간격으로만 선택 가능 -->
<input type="time" step="900" /> <!-- 900초 = 15분 -->

📌 자바스크립트와 함께 활용

<input type="time" id="meetingTime" />
<script>
  document.getElementById("meetingTime").value = "14:30";
</script>
  • JS에서 .value로 시간 설정 및 제어 가능

📆 2. <input type="month"> — 연/월 입력

✅ 기본 개념

  • 연도와 월(YYYY-MM)만 선택 가능
  • 일(day)은 선택 불가 → 월 단위 데이터(구독/요금제 등)에 적합

✅ 기본 사용 예

<input type="month" name="billingCycle" />

💡 고급 사용 예: 연간 보고서 필터링

<label for="reportMonth">보고 대상 월:</label>
<input type="month" id="reportMonth" min="2023-01" max="2025-12" />

📌 자바스크립트 활용 예시

<input type="month" id="salaryMonth" />
<script>
  const now = new Date();
  const formatted = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}`;
  document.getElementById("salaryMonth").value = formatted;
</script>

📅 3. <input type="week"> — ISO 8601 주간 입력

✅ 기본 개념

  • ISO 8601 형식의 주(YYYY-Www)를 선택
  • 주 단위 업무 보고, 회의 스케줄 지정에 유용

✅ 기본 사용 예

<input type="week" name="weeklySchedule" />

💡 고급 사용 예: 주간 회의 관리 UI

<input type="week" min="2024-W01" max="2024-W52" step="1" />

📌 자바스크립트로 특정 주 자동 설정

<input type="week" id="weekPicker" />
<script>
  const today = new Date();
  const year = today.getFullYear();
  const weekNumber = getWeekNumber(today); // 커스텀 함수 필요
  document.getElementById("weekPicker").value = `${year}-W${weekNumber}`;

  function getWeekNumber(date) {
    const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
    const dayNum = d.getUTCDay() || 7;
    d.setUTCDate(d.getUTCDate() + 4 - dayNum);
    const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
    return String(Math.ceil((((d - yearStart) / 86400000) + 1) / 7)).padStart(2, '0');
  }
</script>

📅 4. <input type="date"> — 연/월/일 선택

✅ 기본 개념

  • 가장 널리 사용되는 날짜 입력 타입
  • 브라우저에서 기본 제공하는 캘린더 UI 지원
  • YYYY-MM-DD 형식

✅ 기본 사용 예

<label>생년월일:</label>
<input type="date" name="birth" />

💡 고급 사용 예 1: 날짜 범위 제한

<input type="date" min="2023-01-01" max="2025-12-31" />

💡 고급 사용 예 2: 오늘 날짜 자동 설정

<input type="date" id="today" />
<script>
  document.getElementById("today").valueAsDate = new Date();
</script>

📅 5. <input type="datetime-local"> — 날짜 + 시간

✅ 기본 개념

  • 날짜와 시간을 동시에 입력받는 필드
  • 시간대(Timezone) 정보는 포함되지 않음 → 로컬 시간 기반
  • YYYY-MM-DDTHH:mm 형식 (T는 구분자)

✅ 기본 사용 예

<input type="datetime-local" name="appointment" />

💡 고급 사용 예: 회의 예약 시스템

<input type="datetime-local" id="bookingTime" min="2024-04-01T09:00" max="2024-04-01T18:00" step="1800" />
<!-- 30분 단위 선택 -->

📌 자바스크립트 연동 예

<input type="datetime-local" id="logDate" />
<script>
  const now = new Date();
  const local = now.toISOString().slice(0,16);
  document.getElementById("logDate").value = local;
</script>

🔍 브라우저 지원 현황 요약

         
타입 크롬 파이어폭스 사파리 IE
time ✅ ✅ ✅ ❌
month ✅ ✅ ✅ ❌
week ✅ ✅ ✅ ❌
date ✅ ✅ ✅ ❌
datetime-local ✅ ✅ ✅ ❌
  • 구형 브라우저(특히 IE)는 입력 타입 무시 → type="text"처럼 처리됨

✅ 결론

HTML의 시간/날짜 입력 타입은 기능이 단순해 보이지만 적절히 활용하면 매우 강력한 폼 인터페이스를 만들 수 있습니다. 또한 자바스크립트와 함께 사용하면 동적 기능 확장도 가능하며, UX와 데이터 정합성 모두 개선할 수 있습니다.

실무에서는 각 입력 타입의 표현 범위와 제약 조건을 잘 이해하고, 적절한 min/max/step 설정, 기본값 자동화, 로직 유효성 검사 등을 병행하는 것이 좋습니다.

반응형

'Programing > HTML' 카테고리의 다른 글

🔤 HTML 특수 문자(Entity) 정리 가이드  (0) 2025.04.18
🌐 메타 태그(meta tag) 종류와 사용법 정리  (0) 2025.04.18
HTML5 Video - DOM 속성 및 이벤트.  (0) 2012.01.26
HTML5 mobile meta 태그  (0) 2011.01.11
table border  (0) 2010.04.07
html target 옵션  (0) 2009.12.29
페이지 로딩중(로딩바) 표시  (0) 2009.11.26
메모  (0) 2009.06.01
'Programing/HTML' 카테고리의 다른 글
  • 🔤 HTML 특수 문자(Entity) 정리 가이드
  • 🌐 메타 태그(meta tag) 종류와 사용법 정리
  • HTML5 Video - DOM 속성 및 이벤트.
  • HTML5 mobile meta 태그
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    It
    jsp
    자바
    iT's MY LiFE
    자바스크립트유틸
    자바스크립트
    IT 관련
    블로그
    IT블로그
    JavaScript
    js패턴
    SQL
    읽고 싶은 책
    php
    IT·컴퓨터
    디자인패턴
    Java
    기초
    사고 싶은 책
    위시리스트
Dongkkase
HTML <input> 시간 관련 타입 완전 정복: time, month, week, date, datetime-local
상단으로

티스토리툴바