【发布时间】:2019-02-22 20:21:02
【问题描述】:
我正在尝试使用 moment.js 和 datetime picker 计算本机反应的睡眠时间。当我尝试时,结果总是 0,这是不正确的。
这是我从 moment.js 使用的格式:moment.duration(moment(this.selectedEndDateTime).diff(moment(this.selectedStartDateTime))).asHours()。
export default class DateTimePickerTester extends Component {
state = {
startDateTimePickerVisible: false,
endDateTimePickerVisible: false,
selectedStartDateTime: moment().format('ddd MMM D YYYY 12:00 AM').toUpperCase(),
selectedEndDateTime: moment().format('ddd MMM D YYYY 8:00 AM').toUpperCase(),
};
showStartDateTimePicker = () => this.setState({ startDateTimePickerVisible: true });
showEndDateTimePicker = () => this.setState({ endDateTimePickerVisible: true });
hideStartDateTimePicker = () => this.setState({ startDateTimePickerVisible: false });
hideEndDateTimePicker = () => this.setState({ endDateTimePickerVisible: false });
handleStartDateTimePicked = (datetime) => {
this.setState({
selectedStartDateTime: moment(datetime).format('ddd MMM D YYYY h:mm a').toUpperCase()
})
this.hideStartDateTimePicker();
};
handleEndDateTimePicked = (datetime) => {
this.setState({
selectedEndDateTime: moment(datetime).format('ddd MMM D YYYY h:mm a').toUpperCase()
})
this.hideEndDateTimePicker();
this.displaySleepDuration()
};
displaySleepDuration = (datetime) => {
this.setState({
sleepDuration: moment.duration(moment(this.selectedEndDateTime).diff(moment(this.selectedStartDateTime))).asHours()
})
}
render () {
console.log( this.state.sleepDuration )
return (
<View style={{ flex: 1, margin: 50 }}>
<Text style={{ fontWeight: 'bold', marginBottom: 10 }}>
Time Slept: {this.state.sleepDuration}
</Text>
<TouchableOpacity onPress={this.showStartDateTimePicker}>
<Text>
In Bed: {this.state.selectedStartDateTime}
</Text>
</TouchableOpacity>
<TouchableOpacity onPress={this.showEndDateTimePicker}>
<Text>
Awake: {this.state.selectedEndDateTime}
</Text>
</TouchableOpacity>
<DateTimePicker
mode='datetime'
isVisible={this.state.startDateTimePickerVisible}
onConfirm={this.handleStartDateTimePicked}
onCancel={this.hideStartDateTimePicker}
/>
<DateTimePicker
mode='datetime'
isVisible={this.state.endDateTimePickerVisible}
onConfirm={this.handleEndDateTimePicked}
onCancel={this.hideEndDateTimePicker}
/>
</View>
);
}
}
【问题讨论】:
标签: react-native momentjs datetimepicker