Date Time Picker
Combined date & time picker.
This component combines the date & time pickers. It allows the user to select both date and time with the same control.
Note that this component is the DatePicker and TimePicker component combined, so any of these components' props can be passed to the DateTimePicker.
Requirements
This component relies on the date management library of your choice. It supports date-fns, luxon, dayjs, moment and any other library via a public dateAdapter
interface.
Please install any of these libraries and set up the right date engine by wrapping your root (or the highest level you wish the pickers to be available) with LocalizationProvider
:
// or @material-ui/lab/Adapter{Dayjs,Luxon,Moment} or any valid date-io adapter
import AdapterDateFns from '@material-ui/lab/AdapterDateFns';
import LocalizationProvider from '@material-ui/lab/LocalizationProvider';
function App() {
return (
<LocalizationProvider dateAdapter={AdapterDateFns}>...</LocalizationProvider>
);
}
Basic usage
Allows choosing date then time. There are 4 steps available (year, date, hour and minute), so tabs are required to visually distinguish date/time steps.
<LocalizationProvider dateAdapter={AdapterDateFns}>
<DateTimePicker
renderInput={(props) => <TextField {...props} />}
label="DateTimePicker"
value={value}
onChange={(newValue) => {
setValue(newValue);
}}
/>
</LocalizationProvider>
Responsiveness
The DateTimePicker
component is designed and optimized for the device it runs on.
- The
MobileDateTimePicker
component works best for touch devices and small screens. - The
DesktopDateTimePicker
component works best for mouse devices and large screens.
By default, the DateTimePicker
component renders the desktop version if the media query @media (pointer: fine)
matches.
This can be customized with the desktopModeMediaQuery
prop.
Date and time validation
It is possible to restrict date and time selection in two ways:
- by using
minDateTime
/maxDateTime
its possible to restrict time selection to before or after a particular moment in time - using
minTime
/maxTime
, you can disable selecting times before or after a certain time each day respectively
Static mode
It's possible to render any date & time picker inline. This will enable building custom popover/modal containers.
<LocalizationProvider dateAdapter={AdapterDateFns}>
<StaticDateTimePicker
displayStaticWrapperAs="desktop"
openTo="year"
value={value}
onChange={(newValue) => {
setValue(newValue);
}}
renderInput={(params) => <TextField {...params} />}
/>
</LocalizationProvider>
Hardcoded helper text
Clear Initial State