
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
react-native-datetimepicker-update
Advanced tools
React Native date & time picker component for iOS and Android
| iOS | |
|
|
| Android | |
|
|
mode (optional)display (optional, Android only)onChange (optional)value (required)maximumDate (optional)minimumDate (optional)timeZoneOffsetInMinutes (optional, iOS only)locale (optional, iOS only)is24Hour (optional, Android only)neutralButtonLabel (optional, Android only)minuteInterval (optional, iOS only)style (optional, iOS only)npm install @react-native-community/datetimepicker --save
or
yarn add @react-native-community/datetimepicker
If you are using RN >= 0.60, only run pod install from the ios directory. Then rebuild your project.
For RN < 0.60, you need to link the dependency using react-native link:
react-native link @react-native-community/datetimepicker
Then run pod install from the ios directory and rebuild your project.
If this does not work, see Manual installation.
import DateTimePicker from '@react-native-community/datetimepicker';
or
const DateTimePicker = require('@react-native-community/datetimepicker');
import React, {useState} from 'react';
import {View, Button, Platform} from 'react-native';
import DateTimePicker from '@react-native-community/datetimepicker';
const App = () => {
const [date, setDate] = useState(new Date(1598051730000));
const [mode, setMode] = useState('date');
const [show, setShow] = useState(false);
const onChange = (event, selectedDate) => {
const currentDate = selectedDate || date;
setShow(Platform.OS === 'ios');
setDate(currentDate);
};
const showMode = currentMode => {
setShow(true);
setMode(currentMode);
};
const showDatepicker = () => {
showMode('date');
};
const showTimepicker = () => {
showMode('time');
};
return (
<View>
<View>
<Button onPress={showDatepicker} title="Show date picker!" />
</View>
<View>
<Button onPress={showTimepicker} title="Show time picker!" />
</View>
{show && (
<DateTimePicker
testID="dateTimePicker"
timeZoneOffsetInMinutes={0}
value={date}
mode={mode}
is24Hour={true}
display="default"
onChange={onChange}
/>
)}
</View>
);
};
export default App;
Please note that this library currently exposes functionality from
UIDatePickeron iOS and DatePickerDialog + TimePickerDialog on Android.These native classes offer only limited configuration, while there are dozens of possible options you as a developer may need. It follows that if your requirement is not supported by the backing native views, this libray will not be able to implement your requirement. When you open an issue with a feature request, please document if (or how) the feature can be implemented using the aforementioned native views. If those views do not support what you need, such feature requests will be closed as not actionable.
mode (optional)Defines the type of the picker.
List of possible values:
"date" (default for iOS and Android)"time""datetime" (iOS only)"countdown" (iOS only)<RNDateTimePicker mode="time" />
display (optional, Android only)Defines the visual display of the picker for Android and will be ignored for iOS.
List of possible values:
"default""spinner""calendar" (only for date mode)"clock" (only for time mode)<RNDateTimePicker display="spinner" />
onChange (optional)Date change handler.
This is called when the user changes the date or time in the UI. It receives the event and the date as parameters.
setDate = (event, date) => {};
<RNDateTimePicker onChange={this.setDate} />;
value (required)Defines the date or time value used in the component.
<RNDateTimePicker value={new Date()} />
maximumDate (optional)Defines the maximum date that can be selected.
<RNDateTimePicker maximumDate={new Date(2300, 10, 20)} />
minimumDate (optional)Defines the minimum date that can be selected.
<RNDateTimePicker minimumDate={new Date(1950, 0, 1)} />
timeZoneOffsetInMinutes (optional, iOS only)Allows changing of the timeZone of the date picker. By default it uses the device's time zone.
// GMT+1
<RNDateTimePicker timeZoneOffsetInMinutes={60} />
textColor (optional, iOS only)Allows changing of the textColor of the date picker.
<RNDateTimePicker textColor="red" />
locale (optional, iOS only)Allows changing of the locale of the component. By default it uses the device's locale.
<RNDateTimePicker locale="es-ES" />
is24Hour (optional, Android only)Allows changing of the time picker to a 24 hour format.
<RNDateTimePicker is24Hour={true} />
neutralButtonLabel (optional, Android only)Allows displaying neutral button on picker dialog.
Pressing button can be observed in onChange handler as event.type === 'neutralButtonPressed'
<RNDateTimePicker neutralButtonLabel="clear" />
minuteInterval (optional, iOS only)The interval at which minutes can be selected.
Possible values are: 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30
<RNDateTimePicker minuteInterval={10} />
style (optional, iOS only)Sets style directly on picker component. By default height of picker is fixed to 216px.
<RNDateTimePicker style={{flex: 1}} />
RNDateTimePicker is the new common name used to represent the old versions of iOS and Android.
On Android, open picker modals will update the selected date and/or time if the prop value changes. For example, if a HOC holding state, updates the value prop. Previously the component used to close the modal and render a new one on consecutive calls.
initialDate is deprecated, use value instead.
// Before
<DatePickerIOS initialValue={new Date()} />
// Now
<RNDateTimePicker value={new Date()} />
date is deprecated, use value instead.
// Before
<DatePickerIOS date={new Date()} />
// Now
<RNDateTimePicker value={new Date()} />
onChange now returns also the date.
// Before
onChange = event => {};
<DatePickerIOS onChange={this.onChange} />;
// Now
onChange = (event, date) => {};
<RNDateTimePicker onChange={this.onChange} />;
onDateChange is deprecated, use onChange instead.
// Before
setDate = date => {};
<DatePickerIOS onDateChange={this.setDate} />;
// Now
setDate = (event, date) => {};
<RNDateTimePicker onChange={this.setDate} />;
date is deprecated, use value instead.
// Before
try {
const {action, year, month, day} = await DatePickerAndroid.open({
date: new Date(),
});
} catch ({code, message}) {
console.warn('Cannot open date picker', message);
}
// Now
<RNDateTimePicker mode="date" value={new Date()} />
minDate and maxDate are deprecated, use minimumDate and maximumDate instead.
// Before
try {
const {action, year, month, day} = await DatePickerAndroid.open({
minDate: new Date(),
maxDate: new Date(),
});
} catch ({code, message}) {
console.warn('Cannot open date picker', message);
}
// Now
<RNDateTimePicker
mode="date"
minimumDate={new Date()}
maximumDate={new Date()}
/>
dateSetAction is deprecated, use onChange instead.
// Before
try {
const {action, year, month, day} = await DatePickerAndroid.open();
if (action === DatePickerAndroid.dateSetAction) {
// Selected year, month (0-11), day
}
} catch ({code, message}) {
console.warn('Cannot open date picker', message);
}
// Now
setDate = (event, date) => {
if (date !== undefined) {
// timeSetAction
}
};
<RNDateTimePicker mode="date" onChange={this.setDate} />;
dismissedAction is deprecated, use onChange instead.
// Before
try {
const {action, year, month, day} = await DatePickerAndroid.open();
if (action === DatePickerAndroid.dismissedAction) {
// Dismissed
}
} catch ({code, message}) {
console.warn('Cannot open date picker', message);
}
// Now
setDate = (event, date) => {
if (date === undefined) {
// dismissedAction
}
};
<RNDateTimePicker mode="date" onChange={this.setDate} />;
hour and minute are deprecated, use value instead.
// Before
try {
const {action, hour, minute} = await TimePickerAndroid.open({
hour: 14,
minute: 0,
is24Hour: false, // Will display '2 PM'
});
if (action !== TimePickerAndroid.dismissedAction) {
// Selected hour (0-23), minute (0-59)
}
} catch ({code, message}) {
console.warn('Cannot open time picker', message);
}
// Now
// It will use the hour and minute defined in date
<RNDateTimePicker mode="time" value={new Date()} />
timeSetAction is deprecated, use onChange instead.
// Before
try {
const {action, hour, minute} = await TimePickerAndroid.open();
if (action === TimePickerAndroid.timeSetAction) {
// Selected hour (0-23), minute (0-59)
}
} catch ({code, message}) {
console.warn('Cannot open time picker', message);
}
// Now
setTime = (event, date) => {
if (date !== undefined) {
// Use the hour and minute from the date object
}
};
<RNDateTimePicker mode="time" onChange={this.setTime} />;
dismissedAction is deprecated, use onChange instead.
// Before
try {
const {action, hour, minute} = await TimePickerAndroid.open();
if (action === TimePickerAndroid.dismissedAction) {
// Dismissed
}
} catch ({code, message}) {
console.warn('Cannot open time picker', message);
}
// Now
setTime = (event, date) => {
if (date === undefined) {
// dismissedAction
}
};
<RNDateTimePicker mode="time" onChange={this.setTime} />;
Please see CONTRIBUTING.md
Install CocoaPods, here the installation guide.
Inside the iOS folder run pod init, this will create the initial pod file.
Update your pod file to look like the following ( Remember to replace MyApp with your target name ):
# Allowed sources
source 'https://github.com/CocoaPods/Specs.git'
target 'MyApp' do
# As we use Swift, ensure that `use_frameworks` is enabled.
use_frameworks!
# Specific iOS platform we are targetting
platform :ios, '8.0'
# Point to the installed version
pod 'RNDateTimePicker', :path => '../node_modules/@react-native-community/datetimepicker/RNDateTimePicker.podspec'
# React/React-Native specific pods
pod 'React', :path => '../node_modules/react-native', :subspecs => [
'Core',
'CxxBridge', # Include this for RN >= 0.47
'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
'RCTText',
'RCTNetwork',
'RCTWebSocket', # Needed for debugging
]
# Explicitly include Yoga if you are using RN >= 0.42.0
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
# Third party deps podspec link
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
end
Run pod install inside the same folder where the pod file was created
npm run start
npm run start:ios
Add the following lines to android/settings.gradle:
include ':@react-native-community_datetimepicker'
project(':@react-native-community_datetimepicker').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/datetimepicker/android')
Add the compile line to the dependencies in android/app/build.gradle:
dependencies {
...
implementation project(':@react-native-community_datetimepicker')
}
Add the import and link the package in MainApplication.java:
+ import com.reactcommunity.rndatetimepicker.RNDateTimePickerPackage;
public class MainApplication extends Application implements ReactApplication {
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
+ packages.add(new RNDateTimePickerPackage());
return packages;
}
}
example/ios by running pods installnpm start to start Metro Bundlernpm run start:ios or npm run start:androidFAQs
DateTimePicker component for React Native
We found that react-native-datetimepicker-update demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.