import React from 'react' import { DatePickerIOS, requireNativeComponent, StyleSheet } from 'react-native' import moment from 'moment' import { throwIfInvalidProps } from './propChecker' const NativeDatePicker = requireNativeComponent( `DatePickerManager`, DatePickerAndroid, { nativeOnly: { onChange: true } } ) class DatePickerAndroid extends React.PureComponent { static defaultProps = { mode: 'datetime', minuteInterval: 1, } render() { if (__DEV__) throwIfInvalidProps(this.props) return ( ) } _onChange = e => { const jsDate = this._fromIsoWithTimeZoneOffset(e.nativeEvent.date).toDate() this.props.onDateChange(jsDate) } _maximumDate = () => this.props.maximumDate && this._toIsoWithTimeZoneOffset(this.props.maximumDate) _minimumDate = () => this.props.minimumDate && this._toIsoWithTimeZoneOffset(this.props.minimumDate) _date = () => this._toIsoWithTimeZoneOffset(this.props.date) _fromIsoWithTimeZoneOffset = date => { if (this.props.timeZoneOffsetInMinutes === undefined) return moment(date) return moment .utc(date) .subtract(this.props.timeZoneOffsetInMinutes, 'minutes') } _toIsoWithTimeZoneOffset = date => { if (this.props.timeZoneOffsetInMinutes === undefined) return moment(date).toISOString() return moment .utc(date) .add(this.props.timeZoneOffsetInMinutes, 'minutes') .toISOString() } } const styles = StyleSheet.create({ picker: { width: 310, height: 180, }, }) DatePickerAndroid.propTypes = DatePickerIOS.propTypes export default DatePickerAndroid