react+antdesign实现,日、周、月、季度的禁止选择某个日期、其他的都可以选择

代码:// 禁止选中日期的函数  
 

const disabledDate = (current) => {

    const monthEnd = dayjs().subtract(2, "day").endOf("month"); // 截止日期

    return (

      dayDisable.some((item) => {

        const currentDate = dayjs(current).format("YYYY-MM-DD");

        return dayjs(item).isSame(currentDate);

      }) || current >= monthEnd

    );

  };

  // 禁止选择的周日期

  const weekdisabledDate = (current) => {

    return dayDisable.some((item) => {

      return current >= dayjs(item) && current <= dayjs(item).endOf("week");

    });

  };

  // 禁止选择的月日期

  const monthdisabledDate = (current) => {

    return dayDisable.some((item) => {

      return current >= dayjs(item) && current <= dayjs(item).endOf("month");

    });

  };

  // 禁止选择的季度日期

  const quarterdisabledDate = (current) => {

    return dayDisable.some((item) => {

      return current >= dayjs(item) && current <= dayjs(item).endOf("quarter");

    });

  };

最终效果

其他周、月、季度 只需要后端返回起始的日期就行,通过dayjs(‘2024-04-01’).endOf("month");来获取截至日期

在 Ant Design (antd) 中,`DatePicker` 组件默认是没有直接限制选择某个范围内的日期季度的功能的。如果你希望用户无法选择当前年份之后的季度,则需要通过 `disabledDate` 属性来自定义禁用规则。 以下是实现这一功能的具体步骤: ### 实现思路 1. **使用 disabledDate** `disabledDate` 是一个函数属性,用于指定哪些日期不可选。我们可以通过它禁止用户选择超过当前年的日期。 2. **获取当前时间并计算界限** - 需要用到 JavaScript 的 Date 对象来获得当前的时间,并基于此构建允许的选择范围。 3. **配置 DatePicker** 将自定义的禁用逻辑应用到组件上即可达到目标。 --- ### 示例代码 ```jsx import React from 'react'; import { DatePicker } from 'antd'; const App = () => { // 定义禁用日期逻辑 const disabledDate = (current) => { if (!current) return false; // 如果没有传入 current 参数则返回 false // 获取当前时间和年份 const now = new Date(); const thisYear = now.getFullYear(); // 禁止选择当前年以后的所有日期 return current && current.year() > thisYear; }; return ( <div> {/* 使用 quarterPicker 来限定只能选择季度 */} <DatePicker picker="quarter" disabledDate={disabledDate} placeholder="请选择季度" /> </div> ); }; export default App; ``` --- ### 关键点解析 1. **`picker='quarter'`** 设置为 `'quarter'` 表示仅显示季度选项而不是完整日期。 2. **`disabledDate(current)` 函数的作用** 这里的核心是判断是否超出条件: ```javascript return current && current.year() > thisYear; ``` 当前年后的所有日期都会被标记为“不可选”。 3. **兼容性注意项** 上述例子假设用户环境支持 Moment.js 或 Day.js(Antd 默认依赖)。如果项目切换了新的日期库,请记得更新 API 调用方式。 --- ### 总结 通过上述方法可以轻松地设置只让用户选取截至当年及以前的季度内容,同时保证良好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值