如何string.splice时区

时间:2018-11-05 06:25:51

标签: javascript string react-native

我正在使用react-native-modal-datetime-picker来选择日期,它可以正常工作。例如,当我选择一个日期时,我会得到如下信息:Mon Nov 05 2018 14:35:47 GMT+0900 (Korean Standard Time)

但是我得到了不必要的值,因此我想使用Nov 05 2018 14:35string.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)},但是没有用。知道为什么吗?

3 个答案:

答案 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()

谁还在寻找答案。