I use expo's datetime picker and it works perfectly fine if I click on it only once. If I click on it twice it gives me the following error:
TypeError: value.getTime is not a function. (In 'value.getTime()', 'value.getTime' is undefined)
This error is located at: in RNDateTimePicker (at MyDateTimePicker.js:52)
This is my date time picker:
import React, { useState, useEffect } from 'react';
import { View, Text, TextInput, Image, Button, StyleSheet, TouchableOpacity } from 'react-native';
import DateTimePicker from '@react-native-community/datetimepicker';
import Moment from 'moment';
export default function MyDateTimePicker(props) {
console.log("my date time picker props: ", props);
const title = props.title;
const [date, setDate] = useState(new Date());
const [time, setTime] = useState(new Date());
const [mode, setMode] = useState('date');
const [show, setShow] = useState(false);
const [text, setText] = useState(Moment(date).format('DD MMM YYYY HH:mm'));
const onChange = (event, selectedValue) => {
setShow(Platform.OS === 'ios');
if (mode == 'date') {
const currentDate = selectedValue || new Date();
setDate(new Date(currentDate));
setMode('time');
setShow(Platform.OS !== 'ios'); // to show time
} else {
const currentTime = selectedValue || new Date();
setDate(date.setTime(currentTime.getTime()));
setShow(Platform.OS === 'ios'); // to hide back the picker
setMode('date'); // defaulting to date for next open
}
props.updateDate(date);
};
const showMode = (currentMode) => {
setShow(true);
setMode(currentMode);
};
const showDatepicker = () => {
console.log("show date picker");
showMode('date');
};
const showTimepicker = () => {
console.log("show time picker");
showMode('time');
};
return(
<View style={styles.viewStyle}>
<TouchableOpacity onPress={showDatepicker}>
<Text style={styles.inputStyle}>{text}</Text>
</TouchableOpacity>
{show && (
<DateTimePicker
value={date}
mode={mode}
is24Hour={true}
display="default"
onChange={onChange}
minimumDate={new Date()}
showTimeSelect
/>
)}
</View>
)
}
And this is how I use it:
<MyDateTimePicker updateDate={(date) => this.handleDate(date)} />
Where
handleDate(date) {
this.setState({date: date});
}
Again, if I click on the date-time picker only once, it all works fine, but if I try to select second date it breaks and I dont see why.