基于Antd的DatePicker组件进行二次封装:支持随意输入任意格式时间

该组件是基于antd的DatePicker日期组件二次封装的组件,本次封装主要是额外支持输入任意类型的日期格式

  • 输入类型:2022-11-11、2022.11.11、2022/11/11、2022.11-12等混合输入类型,最后框中展示的格式是有外部传入的format所决定
    在这里插入图片描述

主要代码如下

const regFormat = /^(\d{4})[-./]?(\d{2})[-/.]?(\d{2})$/


/**
 * @param 获取输入框输入的日期及格式 
 * @returns 
 */
const getInputDate = (info) => {
  let curDate = null; // 当前日期
  let tempFormat = null;
  if (info.trim() === '') {
    return false;
  }
  if (regFormat.test(info) && (isNaN(Number()) || info.includes('.'))) {
    tempFormat = info
      .replace(RegExp.$1, 'YYYY')
      .replace(RegExp.$2, 'MMM')
      .replace(RegExp.$3, 'DD');
    const preDate = info.replace(/\.|\//g, '-');
    const dateNum = preDate.split('-').join('');
    curDate = moment(dateNum);
  } else if (regFormat.test(info)) {
    tempFormat = info
      .replace(RegExp.$1, 'YYYY')
      .replace(RegExp.$2, 'MMM')
      .replace(RegExp.$3, 'DD');
    curDate = moment(dateNum);
  }

  // 判断当前输入的日期是否是有效
  const isDate =
    new Date(curDate).getDate() === Number(info?.substring(info.length - 2));
  const curFormat = isDate ? tempFormat : null; // 当前日期格式
  return isDate ? { curFormat, curDate } : null;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值