a-range-picker日期控件使用

Ant Design Vue 中日期选择控件

a-range-picker

客户要求:默认显示当月的第一天和最后一天

				 <a-range-picker
                    v-model="queryParam.createTimeRange"
                    format="YYYY-MM-DD"
                    :placeholder="['开始时间', '结束时间']"
                    @change="onDateChange"
                    @ok="onDateOk"
                  />
	import moment from 'moment'
	created() {
	 //获取当月第一天
      this.queryParam.beginTime=this.currentTime();
      //获取当月最后一天
      this.queryParam.endTime=this.getLastDayOfNaturalMonth();
      //回显数据至日期选择控件
      this.queryParam.createTimeRange = [moment(new Date(this.queryParam.beginTime),'YYYY-MM-DD'),moment(new Date(this.queryParam.endTime),'YYYY-MM-DD')]
    },
    methods: {
	      //获取当月的第一天
	      currentTime() {
	        const currentDate = new Date();
	        const year = currentDate.getFullYear();//获取当前年
	        const month = String(currentDate.getMonth() + 1).padStart(2, "0");//获取当前月
	        const firstDay = "01";//日
	        return `${year}-${month}-${firstDay}`;
	      },
	      //获取当月的最后一天
	      getLastDayOfNaturalMonth() {
	        // 获取当前日期
	        const currentDate = new Date();
	        // 获取当前年份
	        let year = currentDate.getFullYear();
	        // 获取下个月的月份,使用 padStart 在月份小于 10 时在前面补零
	        let month = String(currentDate.getMonth() + 2).padStart(2, "0");
	        // 如果月份为 '13',说明当前是12月,需要更新年份并将月份设置为 '01'
	        if (month === '13') {
	          year = year + 1;
	          month = '01';
	        }
	        // 设置每个月的第一天为 '01'
	        let firstDay = "01";
	        // 构建下个月的第一天的日期字符串,格式为 'YYYY-MM-DD'
	        const firstDayOfNextMonth = `${year}-${month}-${firstDay}`;
	        // 计算当前月的最后一天,通过减去一天的毫秒数来得到
	        const lastDayOfMonth = new Date(new Date(firstDayOfNextMonth).getTime() - 86400000);
	        // 将最后一天的日期转换为 ISO 格式,并提取日期部分
	        return lastDayOfMonth.toISOString().split("T")[0];
	      },
	      onDateChange: function (value, dateString) {
	        this.queryParam.beginTime=dateString[0];
	        this.queryParam.endTime=dateString[1];
        	this.$forceUpdate()
   		   },
	      onDateOk(value) {
	        console.log(value);
	      },
      }

在这里插入图片描述

小计

1.获取当月第一天和最后一天的方法是从这个博主看到的https://blog.youkuaiyun.com/shejiu666666?type=blog
2.时间控件的展示进行记录
3.moment 是一个专门处理日期的插件库,在项目中可以下载使用

### 关于 `a-range-picker` 的使用方法与月份区间选择 目前提供的引用中并未提及具体的 `a-range-picker` 组件及其功能实现方式。然而,可以推测其可能是一个类似于 `react-daterange-picker` 或其他日期范围选择器的工具。以下是基于现有技术栈和常见实践总结的内容。 #### 1. 安装依赖 如果目标是寻找一个类似的组件并用于月份区间的选取,则可以选择已知的库如 `react-daterange-picker` 进行替代操作。安装命令如下: ```bash npm install react-daterange-picker ``` 此命令来源于已有引用中的描述[^1]。 #### 2. 配置月份区间选择 对于大多数日期范围选择器而言,默认情况下它们是以天为基础单位工作的。为了切换至按月选择模式,通常需要调整配置参数或者通过自定义逻辑处理输入输出数据。以下是一些常见的解决方案: ##### 方法一:修改显示粒度 部分高级组件允许开发者指定最小可选单元(例如年、季度或月)。假设所使用的组件支持此类特性,则可以通过设置属性完成需求。例如,在某些框架下可能存在类似这样的 API 调用形式: ```javascript import { DateRangePicker } from 'react-daterange-picker'; function MonthSelector() { const [selectedMonthRange, setSelectedMonthRange] = useState({ startDate: new Date(), endDate: null, }); return ( <DateRangePicker showMonths={true} // 显示月份而非具体日期 ranges={[selectedMonthRange]} onChange={(ranges) => setSelectedMonthRange(ranges.selection)} /> ); } ``` 上述代码片段展示了如何利用虚拟变量控制界面行为,并尝试暴露额外选项以适应特定业务场景的需求[^3]。 ##### 方法二:手动解析结果 当原生控件无法直接满足要求时,另一种可行的办法是从原始返回值提取必要字段再加以转换。比如先让用户正常挑选任意两天作为边界点,之后程序内部计算对应所属公历年份内的整个月份数组集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值