• 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 的具体文档

    获取时间值

    官网提供的函数:

    function onChange(date, dateString) {
     console.log(date, dateString);
     // date 就是原始的日期数值,dateString 就是我们需要的日期格式
    }

    如果DatePicker组件嵌套在form表单里面,有两种方式获取日期值

    第一种方式:

    使用官网提供的函数,并在State中设置日期参数

    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中获取日期参数值。

    第二种方式:

    使用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)

  • 相关阅读:
    input搜索框实时检索功能实现(超简单,核心原理请看思路即可)
    django blank 和autonow
    dwebsocket的坑
    vue 动态添加active+父子传值
    NO 2,人生苦短,我学python之python+selenium元素定位
    NO 1,人生苦短,我学python之python+selenium自动化环境搭建
    SPU与SKU概念
    数据库,缓存数据一致性常用解决方案总结
    利用注解 + 反射消除重复代码
    Nacos学习与实战
  • 原文地址:https://www.cnblogs.com/snowhite/p/14721922.html
Copyright © 2020-2023  润新知