react-datepicker vs react-datetime vs react-datetime-picker
React 日期时间选择器库
react-datepickerreact-datetimereact-datetime-picker类似的npm包:

React 日期时间选择器库

在现代Web开发中,日期和时间选择器是用户界面中不可或缺的元素。它们帮助用户以友好的方式选择日期和时间,提升用户体验。React生态系统中有多个库可供选择,每个库都有其独特的功能和设计理念。选择合适的日期时间选择器库可以显著提高开发效率和用户交互的流畅性。

npm下载趋势

3 年

GitHub Stars 排名

统计详情

npm包名称
下载量
Stars
大小
Issues
发布时间
License
react-datepicker08,3834.5 MB969 个月前MIT
react-datetime02,003291 kB1822 年前MIT
react-datetime-picker0583162 kB01 个月前MIT

功能对比: react-datepicker vs react-datetime vs react-datetime-picker

功能丰富性

  • react-datepicker:

    react-datepicker提供了丰富的功能,包括日期范围选择、时间选择、禁用特定日期、节假日高亮等,适合复杂的日期选择需求。

  • react-datetime:

    react-datetime支持同时选择日期和时间,提供了简单的界面和API,适合需要快速实现基本功能的场景。

  • react-datetime-picker:

    react-datetime-picker专注于提供简洁的日期和时间选择功能,具有良好的可访问性,适合需要快速集成的项目。

自定义能力

  • react-datepicker:

    react-datepicker允许开发者通过自定义样式和组件来满足特定需求,支持多种主题和样式定制。

  • react-datetime:

    react-datetime提供了基本的自定义选项,但相对较少,适合不需要复杂样式的项目。

  • react-datetime-picker:

    react-datetime-picker的自定义能力较弱,主要提供基础样式,适合对样式要求不高的项目。

学习曲线

  • react-datepicker:

    react-datepicker的API相对复杂,学习曲线稍陡,但一旦掌握,能够灵活应对各种需求。

  • react-datetime:

    react-datetime的API设计简单,学习曲线平缓,适合初学者和快速开发。

  • react-datetime-picker:

    react-datetime-picker的API非常简单,几乎没有学习曲线,适合快速上手。

性能

  • react-datepicker:

    react-datepicker在处理大量日期数据时性能良好,但复杂的自定义可能会影响性能。

  • react-datetime:

    react-datetime在性能上表现中等,适合小型项目和简单需求。

  • react-datetime-picker:

    react-datetime-picker非常轻量,性能优越,适合对性能要求高的应用。

社区支持

  • react-datepicker:

    react-datepicker拥有活跃的社区支持,文档详细,易于获取帮助和资源。

  • react-datetime:

    react-datetime的社区相对较小,支持和资源有限,但仍然能够找到基本的帮助。

  • react-datetime-picker:

    react-datetime-picker的社区支持较少,文档简单,适合快速使用但不适合复杂需求。

如何选择: react-datepicker vs react-datetime vs react-datetime-picker

  • react-datepicker:

    选择react-datepicker如果你需要一个功能丰富且易于使用的日期选择器,支持日期范围选择和自定义样式。它提供了丰富的API,适合需要高度自定义的项目。

  • react-datetime:

    选择react-datetime如果你需要一个同时支持日期和时间选择的组件,且希望使用简单的API。它的设计简洁,适合快速开发和小型项目。

  • react-datetime-picker:

    选择react-datetime-picker如果你需要一个轻量级的日期时间选择器,且希望它具有良好的可访问性和响应式设计。它的API简单,适合需要快速集成的场景。

react-datepicker的README

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.

Working with Examples

When using examples from the documentation site, note that they may reference utilities from external libraries. Common imports you might need:

Date manipulation (from date-fns):

import { getYear, getMonth, addDays, subDays, setHours, setMinutes } from "date-fns";

Utility functions:

  • For range() function used in custom headers: import range from "lodash/range";
  • Or implement your own: const range = (start, end, step) => Array.from({ length: (end - start) / step }, (_, i) => start + i * step);

TypeScript types:

import type { ReactDatePickerCustomHeaderProps } from "react-datepicker";

All examples on the documentation site include commented import statements at the top showing exactly what you need to import for your own project.

For a comprehensive guide on imports, see the Common Imports Guide.

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');

Timezone handling

React-datepicker uses native JavaScript Date objects which are timezone-aware. By default, dates are displayed in the user's local timezone. The library does not include built-in timezone conversion utilities.

Common issue: "Date is one day off" (#1018) - If you're seeing dates shift by one day when converting to ISO strings or sending to a server, this is due to timezone conversion, not a bug. See the Timezone Handling Guide for solutions.

For detailed information about working with timezones, UTC dates, and common timezone-related scenarios, see the Timezone Handling Guide.

For applications requiring timezone conversion, we recommend using date-fns-tz alongside react-datepicker.

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.