A React Native date & time picker for Android, using Google's latest Material Design components. Built with Typescript โค๏ธ
Explore the docs ยป
Report Bug
ยท
Request Feature
This library is a React Native date & time picker component for Android, using Google's latest Material Design components. It only works on Android, as iOS has its own native date & time picker components. For iOS, you can use the RNDateTimePicker or DatePickerIOS (deprecated).
0.2.0
, you no longer have to install the Material Design Components library and update your app theme. Please make sure to remove it from your project if you have it installed.yarn add react-native-material-datetime-picker
Rebuild the project. Since iOS is not currently supported, running npx pod-install
is optional.
This library should work with the EAS development client library, but it has not been tested. For managed projects, a config plugin might be needed. If you would like to contribute a config plugin, please open an issue.
import { MaterialDatetimePickerAndroid } from 'react-native-material-datetime-picker';
export const App = () => {
const [date, setDate] = useState(new Date());
const [time, setTime] = useState(new Date());
const showTimePicker = () => {
MaterialDatetimePickerAndroid.show({
value: time,
titleText: 'Select flight time',
mode: AndroidPickerMode.TIME,
is24Hours: true,
inputMode: AndroidTimeInputMode.CLOCK,
onChange: (time) => {
setTime(time);
},
});
};
const showDatePicker = () => {
MaterialDatetimePickerAndroid.show({
value: date,
titleText: 'Select booking date',
mode: AndroidPickerMode.DATE,
minimumDate: subWeeks(today, 3),
maximumDate: addWeeks(today, 4),
inputMode: AndroidDateInputMode.CALENDAR,
type: AndroidDatePickerType.DEFAULT,
onChange: (date) => {
setDate(date);
},
});
};
return (
<View>
<Button onPress={showDatePicker} title="Show date picker" />
<Button onPress={showTimePicker} title="Show time picker" />
<Text>Date: {date.toLocaleString()}</Text>
<Text>Time: {time.toLocaleString()}</Text>
</View>
);
};
import RNMaterialDatetimePicker from 'react-native-material-datetime-picker';
export const App = () => {
const [currentDate, setCurrentDate] = useState(new Date());
const [isVisible, setIsVisible] = useState(false)
return (
<View>
{isVisible &&
<RNMaterialDatetimePicker
mode={AndroidPickerMode.DATE}
value={currentDate}
minimumDate={subWeeks(today, 3)}
maximumDate={addWeeks(today, 4)}
onChange={(date) => {
setCurrentDate(date);
setIsVisible(false);
}}
/>
}
</View>
);
};
Name | Type | Default | Required | Description |
---|---|---|---|---|
mode |
AndroidPickerMode |
AndroidPickerMode.DATE |
โ | The mode of picker to show. Can be either AndroidPickerMode.DATE or AndroidPickerMode.TIME . |
value |
Date |
โ | The current value of the picker | |
titleText |
string |
โ | The title to be shown on the top left | |
positiveButtonText |
string |
โ | The text used in the positive action button | |
negativeButtonText |
string |
โ | The text used in the negative action button | |
onChange |
(date: Date) => string |
โ | The callback invoked when a new date or time is selected | |
onError |
(error: unknown) => void |
โ | The callback invoked when an error occured while selecting a new value |
Name | Type | Default | Required | Description |
---|---|---|---|---|
minimumDate |
Date |
โ | The minimum date allowed to be selected | |
maximumDate |
Date |
โ | The maximum date allowed to be selected | |
startDate |
Date |
โ | The start date when using a date range picker | |
endDate |
Date |
โ | The end date when using a date range picker | |
inputMode |
AndroidDateInputMode |
โ | The input mode to launch the date picker in | |
fullscreen |
boolean |
โ | Whether to show the date picker in fullscreen mode | |
type |
AndroidDatePickerType |
โ | The type of date picker to launch. Can be either AndroidDatePickerType.DEFAULT for the regular date picker or AndroidDatePickerType.RANGE for the date range picker |
|
onDateRangeChange |
(startDate: Date, endDate: Date) => void |
โ | The callback invoked when a date range is selected |
Name | Type | Default | Required | Description |
---|---|---|---|---|
is24Hours |
boolean |
โ | The time format to launch the time picker in | |
inputMode |
AndroidTimeInputMode |
โ | The input mode to launch the time picker in |
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Distributed under the MIT License. See LICENSE
for more information.