DatePickerIOS 组件 - 时间日期组件
例子代码
'use strict';
import React, {
Component,
PropTypes,
DatePickerIOS,
StyleSheet,
Text,
TextInput,
View,
} from 'react-native';
class DatePickerExample extends Component {
constructor(props, context) {
super(props, context);
this.state = {
date: this.props.date,
timeZoneOffsetInHours: this.props.timeZoneOffsetInHours,
};
}
onDateChange(date) {
this.setState({date});
}
onTimezoneChange(event) {
const offset = parseInt(event.nativeEvent.text, 10);
if (isNaN(offset)) {
return;
}
this.setState({timeZoneOffsetInHours: offset});
}
render() {
// Ideally, the timezone input would be a picker rather than a
// text input, but we don't have any pickers yet :(
/*eslint-disable prefer-template*/
return (
<View>
<WithLabel label="Value:">
<Text>{
this.state.date.toLocaleDateString() +
' ' +
this.state.date.toLocaleTimeString()
}</Text>
</WithLabel>
<WithLabel label="Timezone:">
<TextInput
onChange={this.onTimezoneChange}
style={styles.textinput}
value={this.state.timeZoneOffsetInHours.toString()}
/>
<Text> hours from UTC</Text>
</WithLabel>
<Heading label="Date + time picker"/>
<DatePickerIOS
date={this.state.date}
mode="datetime"
timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
onDateChange={this.onDateChange.bind(this)}
/>
<Heading label="Date picker"/>
<DatePickerIOS
date={this.state.date}
mode="date"
timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
onDateChange={this.onDateChange.bind(this)}
/>
<Heading label="Time picker, 10-minute interval"/>
<DatePickerIOS
date={this.state.date}
mode="time"
timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
onDateChange={this.onDateChange.bind(this)}
minuteInterval={10}
/>
</View>
);
}
}
DatePickerExample.defaultProps = {
date: new Date(),
timeZoneOffsetInHours: (-1) * (new Date()).getTimezoneOffset() / 60,
};
DatePickerExample.propTypes = {
date: PropTypes.instanceOf(Date),
timeZoneOffsetInHours: PropTypes.number
}
class WithLabel extends Component {
render() {
return (
<View style={styles.labelContainer}>
<View style={styles.labelView}>
<Text style={styles.label}>
{this.props.label}
</Text>
</View>
{this.props.children}
</View>
);
}
}
class Heading extends Component {
render() {
return (
<View style={styles.headingContainer}>
<Text style={styles.heading}>
{this.props.label}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
textinput: {
height: 26,
width: 50,
borderWidth: 0.5,
borderColor: '#0f0f0f',
padding: 4,
fontSize: 13,
},
labelContainer: {
flexDirection: 'row',
alignItems: 'center',
marginVertical: 2,
},
labelView: {
marginRight: 10,
paddingVertical: 2,
},
label: {
fontWeight: '500',
},
headingContainer: {
padding: 4,
backgroundColor: '#f6f7f8',
},
heading: {
fontWeight: '500',
fontSize: 14,
},
});
export default DatePickerExample;
中英文官方说明
http://reactnative.cn/docs/datepickerios.html#content
http://facebook.github.io/react-native/docs/datepickerios.html#content