我正在使用react-native-modal-datetime-picker来选择日期,它可以正常工作。例如,当我选择一个日期时,我会得到如下信息:Mon Nov 05 2018 14:35:47 GMT+0900 (Korean Standard Time)
但是我得到了不必要的值,因此我想使用Nov 05 2018 14:35
或string.splice
切成subString
。
下面是我的代码:
import DateTimePicker from 'react-native-modal-datetime-picker';
class InfoScreen extends Component{
constructor(props){
super(props)
this.state={
datePick:'',
}
}
_showDateTimePicker = () => this.setState({ isDateTimePickerVisible: true })
_hideDateTimePicker = () => this.setState({ isDateTimePickerVisible: false })
_handleDatePicked = (date) => {
console.log('A date has been picked: ', date);
this._hideDateTimePicker()
this.setState({
datePick:date
})
}
render(){
return(
<View>
<TouchableOpacity onPress = {() => {this._showDateTimePicker()}}>
<Text style={{color:'gray',paddingTop:3, marginLeft:5}}>
//Here I get something like: Mon Nov 05 2018 14:35:47 GMT+0900 (Korean Standard Time)
{this.state.datePick.toString()}</Text>
</TouchableOpacity>
<DateTimePicker
isVisible={this.state.isDateTimePickerVisible}
onConfirm={this._handleDatePicked}
onCancel={this._hideDateTimePicker}
/>
<Text> //I want to get new value here. Something like: Nov 05 2018 14:35
{this.state.datePick.slice(4,7)}
</Text>
</View>
)
}
}
我使用了{this.state.datePick.slice(4,7)}
,但是没有用。知道为什么吗?
答案 0 :(得分:1)
使用slice(4,7)
意味着您将从第4个索引到第6个索引获取子字符串。另外,Date对象没有slice
方法,因此您必须先将其转换为字符串。使用this.state.datePick.toString().slice(4,21)
获取与Nov 05 2018 14:35
相同格式的字符串,或使用this.state.datePick.toString().slice(4,24)
获取秒数。
答案 1 :(得分:0)
使用moment
包来格式化日期,而不是根据需要对它们进行切片,这也不是最好的方法。
npm install moment --save
有关更多信息,请访问https://momentjs.com/docs/
import Moment from 'moment';
{Moment(this.state.chosenDate).format('MMM DD YYYY HH:mm')}
为了显示其工作原理,我使用了DatePickerIOS
。
import React, { Component } from 'react'
import {
DatePickerIOS,
View,
StyleSheet,
Text,
} from 'react-native'
import Moment from 'moment';
export default class App extends Component {
constructor(props) {
super(props);
this.state = { chosenDate: new Date() };
this.setDate = this.setDate.bind(this);
}
setDate(newDate) {
this.setState({chosenDate: newDate})
}
render() {
return (
<View style={styles.container}>
<DatePickerIOS
date={this.state.chosenDate}
onDateChange={this.setDate}
/>
<Text>
{Moment(this.state.chosenDate).format('MMM DD YYYY HH:mm')}
</Text>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center'
},
})
//Nov 05 2018 14:35
答案 2 :(得分:0)
这是一个很晚的答案,但是,
toDateString()
谁还在寻找答案。