DatePicker

Podo UI의 DatePicker 컴포넌트와 사용법을 안내합니다

Import

import { DatePicker } from 'podo-ui';

Props

PropTypeDefaultDescription
mode'instant' | 'period''instant'선택 모드 (instant: 단일, period: 기간)
type'date' | 'time' | 'datetime''date'값 타입 (date: 날짜, time: 시간, datetime: 날짜+시간)
valueDatePickerValue-선택된 값 객체
onChange(value) => void-값 변경 콜백 함수
placeholderstring-플레이스홀더 텍스트
disabledbooleanfalse비활성화 여부
disableDateCondition[]-선택 불가능한 날짜 조건 (특정 날짜, 범위, 함수)
enableDateCondition[]-선택 가능한 날짜 조건 (지정된 날짜만 활성화)
minDateDate | DateTimeLimit-선택 가능한 최소 날짜 (Date 또는 DateTimeLimit)
maxDateDate | DateTimeLimit-선택 가능한 최대 날짜 (Date 또는 DateTimeLimit)
yearRangeYearRange-년도 선택 범위 (min/max). minDate/maxDate보다 우선 적용
minuteStep1 | 5 | 10 | 15 | 20 | 301분 단위 선택 간격 (1, 5, 10, 15, 20, 30)
formatstring-날짜/시간 표시 포맷 (y: 년, m: 월, d: 일, h: 시, i: 분)

기본 사용법

DatePicker는 날짜, 시간, 또는 날짜+시간을 선택할 수 있는 컴포넌트입니다. 단일 선택(instant)과 기간 선택(period) 모드를 지원합니다.

React
import { DatePicker } from 'podo-ui';

// Single date select
<DatePicker
  mode="instant"
  type="date"
  value={value}
  onChange={setValue}
/>

// Period select
<DatePicker
  mode="period"
  type="date"
  value={value}
  onChange={setValue}
/>
실제 예제:
선택됨: -
~
선택됨: -

타입

세 가지 타입을 지원합니다: date(날짜만), time(시간만), datetime(날짜+시간)

타입별 예제:

type="date"

날짜만 선택합니다

-

type="time"

시간만 선택합니다

:
-

type="datetime"

날짜와 시간을 함께 선택합니다

:
-

기간 선택

mode="period"로 설정하면 시작일과 종료일을 선택할 수 있습니다. 하단에 초기화/적용 버튼이 표시됩니다.

기간 선택 예제:

날짜 기간

~
-

시간 기간

:
~
:
-

날짜+시간 기간

:
~
:
-

상태

다양한 상태를 지원합니다:

상태 예제:
-
2026. 1. 15.

날짜 비활성화

disable과 enable props를 사용하여 선택 가능한 날짜를 제한할 수 있습니다. 특정 날짜, 날짜 범위, 또는 함수를 통해 조건을 지정할 수 있습니다.

비활성화 예제:

특정 날짜 비활성화

특정 날짜들을 선택할 수 없게 합니다

-

날짜 범위 비활성화

특정 기간의 날짜들을 선택할 수 없게 합니다

-

함수로 비활성화

조건 함수로 날짜를 동적으로 비활성화합니다

-

특정 날짜만 활성화

enable을 사용하여 지정된 날짜만 선택 가능하게 합니다

-

최소/최대 날짜

minDate와 maxDate props를 사용하여 선택 가능한 날짜 범위를 지정할 수 있습니다. Date 객체 또는 DateTimeLimit 형태로 시간까지 지정할 수 있습니다.

최소/최대 날짜 예제:

날짜만 제한

오늘부터 30일 이내 선택 가능

-

날짜+시간 제한

시작/종료 시간까지 정밀하게 제한

:
-

년도 범위 설정

yearRange props를 사용하여 년도 선택 범위를 지정할 수 있습니다. minDate/maxDate가 있으면 자동으로 년도를 추출하며, yearRange가 명시적으로 지정되면 우선 적용됩니다.

// yearRange만 사용 (명시적 지정)
<DatePicker
  yearRange={{ min: 2020, max: 2030 }}
/>

// minDate/maxDate만 사용 (년도 자동 추출)
<DatePicker
  minDate={new Date(2022, 0, 1)}
  maxDate={new Date(2025, 11, 31)}
/>

// 둘 다 사용 (yearRange 우선, 날짜 비활성화는 minDate/maxDate 적용)
<DatePicker
  yearRange={{ min: 2020, max: 2030 }}
  minDate={new Date(2022, 0, 1)}
/>
년도 범위 예제:

yearRange만 사용

2020~2030년 선택 가능

-

minDate/maxDate와 함께

yearRange 우선, 날짜 제한은 minDate/maxDate 적용

-

부분 지정

min만 yearRange로, max는 maxDate에서 추출

-

분 단위 선택

minuteStep props를 사용하여 분 선택 간격을 지정할 수 있습니다. 1, 5, 10, 15, 30분 단위를 지원하며 기본값은 1분입니다.

분 단위 예제:

minuteStep=1

1분 단위 (기본)

:
-

minuteStep=5

5분 단위

:
-

minuteStep=15

15분 단위

:
-

minuteStep=30

30분 단위

:
-

날짜 포맷

format props를 사용하여 날짜/시간 표시 형식을 지정할 수 있습니다. y(년), m(월), d(일), h(시), i(분)을 조합하여 원하는 포맷을 만들 수 있습니다.

포맷 예제:

format="y-m-d"

대시 구분

-

format="y.m.d"

점 구분

-

format="y년 m월 d일"

한국어 포맷

-

format="y.m.d h:i"

날짜+시간 포맷

:
-

초기 달력 월 설정

기간 선택 모드에서 initialCalendar props를 사용하여 왼쪽/오른쪽 달력의 초기 표시 월을 설정할 수 있습니다. 'now'(현재 달), 'prevMonth'(이전 달), 'nextMonth'(다음 달) 또는 Date 객체를 사용할 수 있습니다.

초기 달력 예제:

prevMonth / now

이전 달 / 현재 달

~
-

now / nextMonth

현재 달 / 다음 달

~
-

Date

특정 날짜 지정

~
-

Value 인터페이스

DatePickerValue는 날짜와 시간을 별도의 필드로 관리합니다. 이를 통해 날짜와 시간을 독립적으로 바인딩하고 제어할 수 있습니다.

TypeScript
interface TimeValue {
  hour: number;   // 0-23
  minute: number; // 0-59
}

interface DatePickerValue {
  date?: Date;        // Start date
  time?: TimeValue;   // Start time
  endDate?: Date;     // End date (period mode)
  endTime?: TimeValue; // End time (period mode)
}