DatePicker 日期选择

用于选择日期或者时间。

规则

  • 最多展示 5 个独立滚轮,每个滚轮表示一个不同的值。

代码演示

基本

日期时间选择示例 (rc-form 文档)

  1. import { DatePicker, List, Button } from 'antd-mobile';
  2. import { createForm } from 'rc-form';
  3. import moment from 'moment';
  4. import 'moment/locale/zh-cn';
  5. import enUs from 'antd-mobile/lib/date-picker/locale/en_US';
  6. const zhNow = moment().locale('zh-cn').utcOffset(8);
  7. const maxDate = moment('2018-12-03 +0800', 'YYYY-MM-DD Z').utcOffset(8);
  8. const minDate = moment('2015-08-06 +0800', 'YYYY-MM-DD Z').utcOffset(8);
  9. const maxTime = moment('22:00 +0800', 'HH:mm Z').utcOffset(8);
  10. const minTime = moment('00:30 +0800', 'HH:mm Z').utcOffset(8);
  11. const gmtNow = moment().utcOffset(0);
  12. // 如果不是使用 List.Item 作为 children
  13. const CustomChildren = (props) => (
  14. <div
  15. onClick={props.onClick}
  16. style={{ backgroundColor: '#fff', height: '0.9rem', lineHeight: '0.9rem', padding: '0 0.3rem' }}
  17. >
  18. {props.children}
  19. <span style={{ float: 'right' }}>{props.extra}</span>
  20. </div>
  21. );
  22. let Test = React.createClass({
  23. getInitialState() {
  24. return {
  25. date: zhNow,
  26. dpValue: null,
  27. visible: false,
  28. };
  29. },
  30. onChange(date) {
  31. // console.log('onChange', date);
  32. this.setState({
  33. date,
  34. });
  35. },
  36. render() {
  37. const { getFieldProps } = this.props.form;
  38. return (<div>
  39. <List
  40. className="date-picker-list"
  41. renderHeader={() => '选择时间'}
  42. style={{ backgroundColor: 'white' }}
  43. >
  44. <DatePicker
  45. mode="date"
  46. title="选择日期"
  47. extra="可选,小于结束日期"
  48. {...getFieldProps('date1', {
  49. initialValue: zhNow,
  50. })}
  51. minDate={minDate}
  52. maxDate={maxDate}
  53. >
  54. <List.Item arrow="horizontal">日期</List.Item>
  55. </DatePicker>
  56. <DatePicker mode="time" {...getFieldProps('time1')}>
  57. <List.Item arrow="horizontal">时间,不限定上下限</List.Item>
  58. </DatePicker>
  59. <DatePicker
  60. mode="time"
  61. {...getFieldProps('time', {
  62. initialValue: zhNow,
  63. })}
  64. minDate={minTime}
  65. maxDate={maxTime}
  66. >
  67. <List.Item arrow="horizontal">时间</List.Item>
  68. </DatePicker>
  69. <DatePicker className="forss"
  70. mode="datetime"
  71. onChange={this.onChange}
  72. value={this.state.date}
  73. >
  74. <List.Item arrow="horizontal">日期+时间</List.Item>
  75. </DatePicker>
  76. <DatePicker
  77. mode="time"
  78. format={val => val.format('HH:mm Z')}
  79. okText="Ok"
  80. dismissText="Cancel"
  81. locale={enUs}
  82. {...getFieldProps('customformat', {
  83. initialValue: gmtNow,
  84. })}
  85. >
  86. <List.Item arrow="horizontal">time(en_US)</List.Item>
  87. </DatePicker>
  88. <List.Item extra={this.state.dpValue && this.state.dpValue.format()}>
  89. <Button inline size="small" onClick={() => this.setState({ visible: true })}>自定义显示/隐藏</Button>
  90. </List.Item>
  91. </List>
  92. <DatePicker
  93. visible={this.state.visible}
  94. mode="date"
  95. title={<span onClick={() => this.setState({ visible: false })}>点击可以关闭</span>}
  96. extra="请选择(可选)"
  97. onOk={() => console.log('onOk')}
  98. onDismiss={() => console.log('onDismiss')}
  99. value={this.state.dpValue}
  100. onChange={(v) => this.setState({ dpValue: v, visible: false })}
  101. />
  102. <DatePicker
  103. mode="date"
  104. title="选择日期"
  105. extra="请选择(可选)"
  106. value={this.state.dpValue}
  107. onChange={(v) => this.setState({ dpValue: v })}
  108. >
  109. <CustomChildren>时间选择(自定义 children)</CustomChildren>
  110. </DatePicker>
  111. </div>);
  112. },
  113. });
  114. Test = createForm()(Test);
  115. ReactDOM.render(<Test />, mountNode);
  1. .date-picker-list .am-list-item .am-list-line .am-list-extra {
  2. flex-basis: initial;
  3. }

DatePicker日期选择 - 图1

API ( 适用平台:WEB、React-Native )

成员说明类型默认值
mode日期选择的类型,可以是日期date、时间time、日期+时间datetimeStringdate
value当前选中时间,各种mode下格式分别为:YYYY-MM-DDHH:mmYYYY-MM-DD HH:mmmoment
minDate最小可选日期,格式同 valuemoment-
maxDate最大可选日期,格式同 valuemoment-
onChange时间发生变化的回调函数(date: Object): void
locale国际化配置 (可自行构造,结构为 {year, month, day, hour, minute})ObjectDatePicker.locale.zh_CN
okText选中的文案string/React.ReactElement确定
dismissText取消选中的文案string/React.ReactElement取消
title弹框的标题string/React.ReactElement
format格式化选中的值(value:moment) => string/string(val) => { return val; }
extraDatePicker children 建议是 List.Item, 如果不是,需要是自定义组件(组件内需处理onClick/extra属性)String请选择
更多参数及支持情况可参考:https://github.com/react-component/m-date-picker