antd-DatePicker組件獲取時間值,及相關設置方式
DatePicker組件默認語言是英語,需要設置為中文的話,需要安裝moment。
import moment from "moment";
import "moment/locale/zh-cn"
format屬性,設置日期的格式,如“2020-02-28”。
設置日期
選擇日期是今天之前【包含今天】
需要和moment搭配應用
// 設置默認的起始日期 const disabledDate = (current) => { console.log(current) return current > moment().startOf('day'); } <DatePicker disabledDate={disabledDate}
效果如下圖:
如果是選擇今天之后的日期【包含今天】
const disabledDate = (current) => { console.log(current) return current > moment().startOf('day'); }
如圖:
關于moment的API,可以參考 moment 的具體文檔
獲取時間值
官網(wǎng)提供的函數(shù):
function onChange(date, dateString) { console.log(date, dateString); // date 就是原始的日期數(shù)值,dateString 就是我們需要的日期格式 }
如果DatePicker組件嵌套在form表單里面,有兩種方式獲取日期值
第一種方式:
使用官網(wǎng)提供的函數(shù),并在State中設置日期參數(shù)
constructor(){ super() this.state={ date:"" } } onChange = (value,dateString)=>{ this.setState({ date:dateString }) } handleSubmit1 = e => { const that = this; e.preventDefault(); this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { console.log(values.date) that.setState({ date: that.state.date }) that.getData(1, 10, that.state.date); } }); };
<Form className="ant-advanced-search-form" onSubmit={this.handleSubmit1}> <div className="search-report"> <Form.Item label="日期"> {getFieldDecorator('date', { rules: [ { required: false, message: '選擇日期', }, ], })(<DatePicker onChange={this.onChange} format="YYYY-MM-DD" placeholder="選擇日期" />)} </Form.Item> <Button type="primary" htmlType="submit">查詢</Button> </div> </Form>
這種方式在提交表單的時候,直接從state中獲取日期參數(shù)值。
第二種方式:
使用moment轉換日期
handleSubmit3 = e => { e.preventDefault(); this.props.form.validateFieldsAndScroll((err, values) => { const data = moment(values.date).format('YYYY-MM-DD') console.log(data) }); };
補充知識:moment.js可以通過 .format()方法將時間變成字符串:
我就廢話不多說了,就是一行代碼的事,來看看吧~
moment(moment().add(1, 'M')).format(dateFormat)
以上這篇antd-DatePicker組件獲取時間值,及相關設置方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue3.0中Ref與Reactive的區(qū)別示例詳析
在vue3中對響應式數(shù)據(jù)的聲明官方給出了ref()和reactive()這兩種方式,這篇文章主要給大家介紹了關于Vue3.0中Ref與Reactive區(qū)別的相關資料,需要的朋友可以參考下2021-07-07