DatePicker 日期选择
用于选择日期或者时间。
规则
- 最多展示 5 个独立滚轮,每个滚轮表示一个不同的值。
代码演示
基本
日期时间选择示例 (rc-form 文档)
import { DatePicker, List } from 'antd-mobile';
import { createForm } from 'rc-form';
import moment from 'moment';
import 'moment/locale/zh-cn';
import enUs from 'antd-mobile/lib/date-picker/locale/en_US';
const zhNow = moment().locale('zh-cn').utcOffset(8);
const maxDate = moment('2016-12-03 +0800', 'YYYY-MM-DD Z').utcOffset(8);
const minDate = moment('2015-08-06 +0800', 'YYYY-MM-DD Z').utcOffset(8);
const maxTime = moment('22:00 +0800', 'HH:mm Z').utcOffset(8);
const minTime = moment('08:30 +0800', 'HH:mm Z').utcOffset(8);
const gmtNow = moment().utcOffset(0);
// 如果不是使用 List.Item 作为 children
const CustomChildren = props => (
<div
onClick={props.onClick}
style={{ backgroundColor: '#fff', height: '0.9rem', lineHeight: '0.9rem', padding: '0 0.3rem' }}
>
{props.children}
<span style={{ float: 'right', color: '#888' }}>{props.extra}</span>
</div>
);
class Test extends React.Component {
state = {
date: zhNow,
dpValue: null,
visible: false,
}
onChange = (date) => {
// console.log('onChange', date);
this.setState({
date,
});
}
render() {
const { getFieldProps } = this.props.form;
return (<div>
<List
className="date-picker-list"
style={{ backgroundColor: 'white' }}
>
<DatePicker
mode="date"
title="选择日期"
extra="可选,小于结束日期"
{...getFieldProps('date1', {
})}
minDate={minDate}
maxDate={maxDate}
>
<List.Item arrow="horizontal">日期(CST)</List.Item>
</DatePicker>
<DatePicker mode="time" {...getFieldProps('time1')} minuteStep={5}>
<List.Item arrow="horizontal">时间(local time)</List.Item>
</DatePicker>
<DatePicker
mode="time"
{...getFieldProps('time', {
initialValue: zhNow,
})}
minDate={minTime}
maxDate={maxTime}
>
<List.Item arrow="horizontal">时间(CST),限定上下限</List.Item>
</DatePicker>
<DatePicker className="forss"
mode="datetime"
onChange={this.onChange}
value={this.state.date}
>
<List.Item arrow="horizontal">日期+时间</List.Item>
</DatePicker>
<DatePicker
mode="time"
format={val => val.format('HH:mm Z')}
okText="OK"
dismissText="Cancel"
locale={enUs}
{...getFieldProps('customformat', {
initialValue: gmtNow,
})}
>
<List.Item arrow="horizontal">time(utc, UK time)</List.Item>
</DatePicker>
<List.Item extra={this.state.dpValue && this.state.dpValue.format('HH:mm Z')}>
<div onClick={() => this.setState({ visible: true })}>自定义控制显示/隐藏的元素</div>
</List.Item>
<DatePicker
visible={this.state.visible}
mode="date"
title={<span onClick={() => this.setState({ visible: false })}>点击可以关闭</span>}
extra="请选择(可选)"
onOk={() => console.log('onOk')}
onDismiss={() => console.log('onDismiss')}
value={this.state.dpValue}
onChange={v => this.setState({ dpValue: v, visible: false })}
/>
<DatePicker
mode="date"
title="选择日期"
extra="请选择(可选)"
value={this.state.dpValue}
onChange={v => this.setState({ dpValue: v })}
>
<CustomChildren>时间选择(自定义 children)</CustomChildren>
</DatePicker>
</List>
</div>);
}
}
const TestWrapper = createForm()(Test);
ReactDOM.render(<TestWrapper />, mountNode);
.date-picker-list .am-list-item .am-list-line .am-list-extra {
flex-basis: initial;
}
API
适用平台:WEB、React-Native
属性 | 说明 | 类型 | 默认值 |
---|
mode | 日期选择的类型, 可以是日期date 、时间time 、日期+时间datetime 、年year , 月 month | String | date |
value | 当前选中时间, 对应 mode 下格式分别为:YYYY-MM-DD 、HH:mm 、YYYY-MM-DD HH:mm | moment | 无 |
minDate | 最小可选日期, 格式同 value | moment | - |
maxDate | 最大可选日期, 格式同 value | moment | - |
onChange | 时间发生变化的回调函数 | (date: Object): void | 无 |
locale | 国际化,可覆盖全局LocaleProvider 的配置 | Object: {DatePickerLocale: {year, month, day, hour, minute}, okText, dismissText } | 无 |
title | 弹框的标题 | string/React.ReactElement | 无 |
format | 格式化选中的值 | (value:moment) => string/string | (val) => { return val; } |
extra | DatePicker children 建议是 List.Item, 如果不是,需要是自定义组件(组件内需处理onClick /extra 属性) | String | 请选择 |
disabled | 是否不可用 | Boolean | false |
prefixCls (WEB only ) | class前缀 | string | am-picker |
className (WEB only ) | 样式类名 | string | - |
minuteStep | The amount of time, in minutes, between each minute item. | Number | 1 |
更多参考:https://github.com/react-component/m-date-picker