react-datepicker vs react-datetime vs react-datetime-picker
React Date and Time Picker Libraries Comparison
1 Year
react-datepickerreact-datetimereact-datetime-pickerSimilar Packages:
What's React Date and Time Picker Libraries?

Date and time picker libraries in React are essential tools for developers to facilitate user input for dates and times in web applications. These libraries enhance user experience by providing intuitive interfaces for selecting dates and times, reducing the likelihood of input errors. They often come with various features such as localization, customization options, and support for different formats, making them versatile for various use cases in forms and applications.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
react-datepicker2,474,6998,2041.93 MB3118 days agoMIT
react-datetime254,5122,007291 kB1842 months agoMIT
react-datetime-picker88,837560299 kB210 months agoMIT
Feature Comparison: react-datepicker vs react-datetime vs react-datetime-picker

User Interface

  • react-datepicker:

    react-datepicker features a minimalist and customizable UI that allows developers to easily style the date picker according to their application's design. It supports various date formats and provides a calendar view for easy navigation through dates.

  • react-datetime:

    react-datetime offers a more integrated approach by combining date and time selection in one component. Its UI is designed to be user-friendly, allowing users to switch between date and time seamlessly, which can be beneficial for applications requiring both inputs.

  • react-datetime-picker:

    react-datetime-picker provides a modern and responsive design that adapts well to different screen sizes. It emphasizes usability with clear visual cues for selecting dates and times, enhancing the overall user experience.

Customization

  • react-datepicker:

    react-datepicker allows extensive customization options, including the ability to change the calendar's appearance, disable specific dates, and set minimum or maximum date ranges. This flexibility makes it suitable for various application needs.

  • react-datetime:

    react-datetime supports customization through props, enabling developers to define the format of the displayed date and time, as well as the ability to restrict selectable ranges. This makes it adaptable for different user requirements.

  • react-datetime-picker:

    react-datetime-picker offers a straightforward API for customization, allowing developers to easily adjust styles and formats. It also supports localization, making it a good choice for international applications.

Localization

  • react-datepicker:

    react-datepicker supports localization, allowing developers to present dates in various formats based on user preferences or regional settings. This feature is crucial for applications targeting a global audience.

  • react-datetime:

    react-datetime includes built-in support for localization, enabling developers to format dates and times according to different locales. This is particularly useful for applications that serve users from diverse geographical regions.

  • react-datetime-picker:

    react-datetime-picker emphasizes localization by allowing developers to customize date and time formats easily. This ensures that users can interact with the component in a way that is familiar to them.

Integration

  • react-datepicker:

    react-datepicker integrates smoothly with forms and state management libraries like Formik and Redux, making it easy to handle form submissions and validations involving date inputs.

  • react-datetime:

    react-datetime is designed to work well with various state management solutions, providing a straightforward way to manage date and time inputs in forms. Its API is intuitive, facilitating quick integration into existing projects.

  • react-datetime-picker:

    react-datetime-picker is built with integration in mind, offering a simple API that allows for easy incorporation into forms and other components. It works well with popular libraries like Formik, enhancing its usability.

Performance

  • react-datepicker:

    react-datepicker is lightweight and optimized for performance, ensuring quick rendering and minimal impact on application load times. Its simplicity contributes to efficient performance in most use cases.

  • react-datetime:

    react-datetime is designed to handle both date and time inputs efficiently, but it may introduce slightly more overhead due to its combined functionality. However, it remains performant for most applications.

  • react-datetime-picker:

    react-datetime-picker is optimized for mobile and desktop performance, ensuring smooth interactions. Its modern design and efficient rendering contribute to a responsive user experience.

How to Choose: react-datepicker vs react-datetime vs react-datetime-picker
  • react-datepicker:

    Choose react-datepicker if you need a simple, lightweight solution for date selection with a clean interface. It offers a wide range of customization options and is well-documented, making it easy to integrate into existing projects.

  • react-datetime:

    Select react-datetime if you require a more comprehensive solution that combines both date and time selection in a single component. It provides flexibility in formatting and supports various input types, making it suitable for complex use cases.

  • react-datetime-picker:

    Opt for react-datetime-picker if you want a modern, user-friendly interface with built-in support for both date and time selection. It is designed for mobile responsiveness and offers a straightforward API, making it ideal for projects that prioritize user experience.

README for react-datepicker

React Date Picker

npm version Test suite codecov Downloads

A simple and reusable Datepicker component for React (Demo)

Installation

The package can be installed via npm:

npm install react-datepicker --save

Or via yarn:

yarn add react-datepicker

You’ll need to install React and PropTypes separately since those dependencies aren’t included in the package. If you need to use a locale other than the default en-US, you'll also need to import that into your project from date-fns (see Localization section below). Below is a simple example of how to use the Datepicker in a React view. You will also need to require the CSS file from this package (or provide your own). The example below shows how to include the CSS from this package if your build system supports requiring CSS files (Webpack is one that does).

import React, { useState } from "react";
import DatePicker from "react-datepicker";

import "react-datepicker/dist/react-datepicker.css";

// CSS Modules, react-datepicker-cssmodules.css
// import 'react-datepicker/dist/react-datepicker-cssmodules.css';

const Example = () => {
  const [startDate, setStartDate] = useState(new Date());
  return <DatePicker selected={startDate} onChange={(date) => setStartDate(date)} />;
};

Configuration

The most basic use of the DatePicker can be described with:

<DatePicker selected={startdate} onChange={(date) => setStartDate(date)} />

You can use onSelect event handler which fires each time some calendar date has been selected

<DatePicker
  selected={date}
  onSelect={handleDateSelect} //when day is clicked
  onChange={handleDateChange} //only when value has changed
/>

onClickOutside handler may be useful to close datepicker in inline mode

See here for a full list of props that may be passed to the component. Examples are given on the main website.

Time picker

You can also include a time picker by adding the showTimeSelect prop

<DatePicker selected={date} onChange={handleDateChange} showTimeSelect dateFormat="Pp" />

Times will be displayed at 30-minute intervals by default (default configurable via timeIntervals prop)

More examples of how to use the time picker are given on the main website

Localization

The date picker relies on date-fns internationalization to localize its display components. By default, the date picker will use the locale globally set, which is English. Provided are 3 helper methods to set the locale:

  • registerLocale (string, object): loads an imported locale object from date-fns
  • setDefaultLocale (string): sets a registered locale as the default for all datepicker instances
  • getDefaultLocale: returns a string showing the currently set default locale
import { registerLocale, setDefaultLocale } from  "react-datepicker";
import { es } from 'date-fns/locale/es';
registerLocale('es', es)

<DatePicker
  locale="es"
/>

Locales can be changed in the following way:

  • Globally - setDefaultLocale('es');

Compatibility

React

We're always trying to stay compatible with the latest version of React. We can't support all older versions of React.

Latest compatible versions:

  • React 16 or newer: React-datepicker v2.9.4 and newer
  • React 15.5: React-datepicker v2.9.3
  • React 15.4.1: needs React-datepicker v0.40.0, newer won't work (due to react-onclickoutside dependencies)
  • React 0.14 or newer: All above React-datepicker v0.13.0
  • React 0.13: React-datepicker v0.13.0
  • pre React 0.13: React-datepicker v0.6.2

Moment.js

Up until version 1.8.0, this package was using Moment.js. Starting v2.0.0, we switched to using date-fns, which uses native Date objects, to reduce the size of the package. If you're switching from 1.8.0 to 2.0.0 or higher, please see the updated example above of check out the examples site for up to date examples.

Browser Support

The date picker is compatible with the latest versions of Chrome, Firefox, and IE10+.

Unfortunately, it is difficult to support legacy browsers while maintaining our ability to develop new features in the future. For IE9 support, it is known that the classlist polyfill is needed, but this may change or break at any point in the future.

Local Development

The main branch contains the latest version of the Datepicker component.

To begin local development:

  1. Run yarn install from project root
  2. Run yarn build from project root
  3. Run yarn start from project root

The last step starts documentation app as a simple webserver on http://localhost:5173.

You can run yarn test to execute the test suite and linters. To help you develop the component we’ve set up some tests that cover the basic functionality (can be found in /tests). Even though we’re big fans of testing, this only covers a small piece of the component. We highly recommend you add tests when you’re adding new functionality.

Please refer to CONTRIBUTING.md file for more details about getting set up.

The examples

The examples are hosted within the docs folder and are ran in the simple app that loads the Datepicker. To extend the examples with a new example, you can simply duplicate one of the existing examples and change the unique properties of your example.

Accessibility

Keyboard support

  • Left: Move to the previous day.
  • Right: Move to the next day.
  • Up: Move to the previous week.
  • Down: Move to the next week.
  • PgUp: Move to the previous month.
  • Shift+PgUp: Move to the same day and month of the previous year. If that day does not exist, moves focus to the last day of the month.
  • PgDn: Move to the next month.
  • Shift+PgDn: Move to the same day and month of the next year. If that day does not exist, moves focus to the last day of the month.
  • Home: Move to the first day (e.g Sunday) of the current week.
  • End: Move to the last day (e.g. Saturday) of the current week.
  • Enter/Esc/Tab: close the calendar. (Enter & Esc calls preventDefault)

For month picker

  • Left: Move to the previous month.
  • Right: Move to the next month.
  • Enter: Select date and close the calendar

License

Copyright (c) 2014-2025 HackerOne Inc. and individual contributors. Licensed under MIT license, see LICENSE for the full license.