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

Default

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

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 propperty 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
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 Disabled date
disabledHours (hour:number, date:Date) => boolean Disabled hours
disabledMinutes (minute:number, date:Date) => boolean Disabled minutes
disabledSeconds (second:number, date:Date) => boolean Disabled seconds
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 lower limit of the available year relative to the current selection date
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
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
onToggleMonthDropdown (open: boolean) => void Callback function that switches to the month view
onToggleTimeDropdown (open: boolean) => void Callback function that switches to the time view
oneTap boolean One click to complete the selection date
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
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)
caretAs ElementType Custom component for the caret icon

ts:Placement

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

ts:Range

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

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
  }
];