DatePicker

To select or input a date or time

When you need to select a date range, it is recommended to use DateRangePicker.

Usage

import { DatePicker } from 'rsuite';

// or
import DatePicker from 'rsuite/DatePicker';

Examples

Basic

Size

One tap

Appearance

Block

Placeholder

Date and time

Show month

Show time

Meridian format

Display hours in 12 format.

ISO week

International Standard ISO 8601 defines that each calendar week begins on Monday and Sunday is the seventh day, ISO week date.

The calendar panel can be displayed in ISO standard via the ╩╗isoWeek` property setting.

Disabled and read only

Disable input

DatePicker allows date and time input via keyboard by default, if you wish to disable it, you can disable editing by setting editable={false}.

Set the local language

DatePicker supports local language custom configuration, but we recommend using the unified i18n configuration.

Placement

Tip: When set to auto*, try to scroll the page, or change the browser size, it will automatically appear in the right place.

Custom short options

Clicking "The day before" in the example does not close the picker layer because the closeOverlay:boolean property is configured. This property is used to set whether to close the picker layer after clicking the shortcut item. The default value is true.

Controlled

Selection range

Show week numbers

Native pickers

If you only need to meet the simple date selection function, you can use the native pickers supported by the browser.

Accessibility

Learn more in Accessibility.

Props

<DatePicker>

Property Type(default) Description
appearance 'default' | 'subtle' ('default') Set picker appearence
block boolean Blocking an entire row
calendarDefaultDate Date Calendar panel default presentation date and time
caretAs ElementType Custom component for the caret icon
cleanable boolean (true) Whether the selected value can be cleared
container HTMLElement | (() => HTMLElement) Sets the rendering container
defaultOpen boolean Default value of open property
defaultValue Date Default value
disabled boolean Whether disabled the component
disabledDate (date:Date) => boolean Deprecated. Use shouldDisableDate instead
disabledHours (hour:number, date:Date) => boolean Deprecated. Use shouldDisableHour instead
disabledMinutes (minute:number, date:Date) => boolean Deprecated. Use shouldDisableMinute instead
disabledSeconds (second:number, date:Date) => boolean Deprecated. Use shouldDisableSecond instead
editable boolean (true) Rendered as an input, the date can be entered via the keyboard
format string ('yyyy-MM-dd') Format date
hideHours (hour:number, date:Date) => boolean Hidden hours
hideMinutes (minute:number, date:Date) => boolean Hidden minutes
hideSeconds (second:number, date:Date) => boolean Hidden seconds
isoWeek boolean ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
limitEndYear number (1000) Set the upper limit of the available year relative to the current selection date
limitStartYear number Set the lower limit of the available year relative to the current selection date
loading boolean (false) Whether to display a loading state indicator
locale CalendarLocaleType Locale text
onChange (date: Date) => void Callback fired when value changed
onChangeCalendarDate (date: Date, event) => void Callback function that changes the calendar date.
onClean (event) => void Callback fired when value clean
onClose () => void Callback fired when close component
onEnter () => void Callback fired before the overlay transitions in
onEntered () => void Callback fired after the overlay finishes transitioning in
onEntering () => void Callback fired as the overlay begins to transition in
oneTap boolean One click to complete the selection date
onExit () => void Callback fired right before the overlay transitions out
onExited () => void Callback fired after the overlay finishes transitioning out
onExiting () => void Callback fired as the overlay begins to transition out
onNextMonth (date: Date) => void Switch to the callback function for the next Month
onOk (date: Date, event) => void Click the OK callback function
onOpen () => void Callback fired when open component
onPrevMonth (date: Date) => void Switch to the callback function for the previous Month
onSelect (date: Date) => void Callback fired when date or time is selected
onShortcutClick (shortcut: Range, event) => void Callback fired when shortcut clicked
onToggleMonthDropdown (open: boolean) => void Callback function that switches to the month view
onToggleTimeDropdown (open: boolean) => void Callback function that switches to the time view
open boolean Whether open the component
placeholder string Placeholder
placement Placement ('bottomStart') The placement of component
preventOverflow boolean Prevent floating element overflow
ranges Range[] (Ranges) Shortcut config
shouldDisableDate (date:Date) => boolean Disabled date
shouldDisableHour (hour:number, date:Date) => boolean Disabled hours
shouldDisableMinute (minute:number, date:Date) => boolean Disabled minutes
shouldDisableSecond (second:number, date:Date) => boolean Disabled seconds
showMeridian boolean Display hours in 12 format
showWeekNumbers boolean Whether to show week numbers
size 'lg' | 'md' | 'sm' | 'xs' ('md') A picker can have different sizes
toggleAs ElementType ('a') You can use a custom element for this component
value Date Value (Controlled)

ts:Placement

type Placement =
  | 'bottomStart'
  | 'bottomEnd'
  | 'topStart'
  | 'topEnd'
  | 'leftStart'
  | 'leftEnd'
  | 'rightStart'
  | 'rightEnd'
  | 'auto'
  | 'autoVerticalStart'
  | 'autoVerticalEnd'
  | 'autoHorizontalStart'
  | 'autoHorizontalEnd';

ts:Range

interface Range {
  label: ReactNode;
  value: Date | ((date: Date) => Date);
  closeOverlay?: boolean;

  // Sets the position where the predefined range is displayed, the default is bottom.
  placement?: 'bottom' | 'left';
}

ts:Ranges

import { addDays } from 'date-fns';

const Ranges = [
  {
    label: 'today',
    value: new Date(),
    closeOverlay: true
  },
  {
    label: 'yesterday',
    value: addDays(new Date(), -1),
    closeOverlay: true
  }
];
Vercel banner