Layui时间范围选择器,添加【本周、本月、本季度、本年等常用时间快捷键】

文章目录

    • 1. 界面实现
    • 2. JS具体实现
      • 2.1 第一种实现
      • 2.2 第二种实现

1. 界面实现

 <input id="Date_select" type="text" class="form-control" placeholder="请选择时间范围" style="border-radius: 4px;" /><input id="StartDate" type="hidden" /><input id="EndDate" type="hidden" />

2. JS具体实现

2.1 第一种实现

//时间选择
layui.laydate.render({elem: '#Date_select',type: 'date',range: true,shortcuts: [{text: '本周',value: function () {let now = new Date(); //当前日期 let nowDayOfWeek = now.getDay() - 1; //今天本周的第几天,周日为0,但实际上平时都是以周一为一周的开始,所以周3因该为2let nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 let startTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);let endTime = new Date(nowYear, nowMonth, nowDay + 6 - nowDayOfWeek);var value = [];value.push(startTime);value.push(endTime);return value;}()},{text: "本月",value: function () {let now = new Date(); //当前日期 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 let startTime = new Date(nowYear, nowMonth, 1);let endTime = new Date(nowYear, nowMonth + 1, 0);var value = [];value.push(startTime);value.push(endTime);return value;}()},{text: "本季度",value: function () {let now = new Date(); //当前日期 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 let jd = Math.ceil((nowMonth + 1) / 3);let startTime = new Date(nowYear, (jd - 1) * 3, 1);let endTime = new Date(nowYear, jd * 3, 0);var value = [];value.push(startTime);value.push(endTime);return value;}()},{text: "本年",value: function () {let now = new Date(); //当前日期 let nowYear = now.getFullYear(); //当前年 let startTime = new Date(nowYear, 0, 1);let endTime = new Date(nowYear, 11, 31);var value = [];value.push(startTime);value.push(endTime);return value;}()},],done: function (value, date, endDate) {//选择后事件var StartDate = null;var EndDate = null;if (!!value) {StartDate = `${date.year}-${date.month}-${date.date} 00:00:00`;EndDate = `${endDate.year}-${endDate.month}-${endDate.date} 23:59:59`;}$("#StartDate").val(StartDate);$("#EndDate").val(EndDate);}
});

在这里插入图片描述

2.2 第二种实现

//时间选择
layui.laydate.render({elem: '#Date_select',type: 'date',range: true,shortcuts: [{text: '前三天',value: function () { return dateRange("前三天"); }()},{text: '昨天',value: function () { return dateRange("昨天"); }()},{text: '今天',value: function () { return dateRange("今天"); }()},{text: '上周',value: function () { return dateRange("上周"); }()},{text: '本周',value: function () { return dateRange("本周"); }()},{text: "上月",value: function () { return dateRange("上月"); }()},{text: "本月",value: function () { return dateRange("本月"); }()},{text: "上季度",value: function () { return dateRange("上季度"); }()},{text: "本季度",value: function () { return dateRange("本季度"); }()},{text: "上年",value: function () { return dateRange("上年"); }()},{text: "本年",value: function () { return dateRange("本年"); }()},],done: function (value, date, endDate) {var StartDate = null;var EndDate = null;if (!!value) {StartDate = `${date.year}-${date.month}-${date.date} 00:00:00`;EndDate = `${endDate.year}-${endDate.month}-${endDate.date} 23:59:59`;}$("#StartDate").val(StartDate);$("#EndDate").val(EndDate);}
});
//日期范围选择快捷键获取数据
function dateRange(val) {let value = [];let startTime, endTime;let now = new Date(); //当前日期 let nowDayOfWeek = now.getDay() - 1; //今天本周的第几天,周日为0,但实际上平时都是以周一为一周的开始,所以周3因该为2let nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 let jd = Math.ceil((nowMonth + 1) / 3)switch (val) {case "前三天":startTime = new Date(nowYear, nowMonth, nowDay - 3);endTime = new Date(nowYear, nowMonth, nowDay);break;case "昨天":startTime = new Date(nowYear, nowMonth, nowDay - 1);endTime = new Date(nowYear, nowMonth, nowDay);break;case "今天":startTime = new Date(nowYear, nowMonth, nowDay);endTime = new Date(nowYear, nowMonth, nowDay);break;case "明天":startTime = new Date(nowYear, nowMonth, nowDay + 1);endTime = new Date(nowYear, nowMonth, nowDay + 1);break;case "上周":debuggerstartTime = new Date(nowYear, nowMonth, (nowDay - nowDayOfWeek) - 7);endTime = new Date(nowYear, nowMonth, (nowDay + 6 - nowDayOfWeek) - 7);break;case "本周":startTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);endTime = new Date(nowYear, nowMonth, nowDay + 6 - nowDayOfWeek);break;case "上月":startTime = new Date(nowYear, nowMonth - 1, 1);endTime = new Date(nowYear, nowMonth, 0);break;case "本月":startTime = new Date(nowYear, nowMonth, 1);endTime = new Date(nowYear, nowMonth + 1, 0);break;case "上季度":startTime = new Date(nowYear, ((jd - 1) - 1) * 3, 1);endTime = new Date(nowYear, (jd - 1) * 3, 0);breakcase "本季度":startTime = new Date(nowYear, (jd - 1) * 3, 1);endTime = new Date(nowYear, jd * 3, 0);breakcase "上年":startTime = new Date(nowYear - 1, 0, 1);endTime = new Date(nowYear - 1, 11, 31);breakcase "本年":startTime = new Date(nowYear, 0, 1);endTime = new Date(nowYear, 11, 31);break}value.push(startTime);value.push(endTime);return value;
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/5413.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TypeScript - 函数(中)

目录 1、编写良好泛型函数的准则 1.1 向下推送类型参数 1.2 使用较少的类型参数 1.3 类型参数应出现两次 2、可选参数 3、回调中的可选参数 4、函数重载 5、重载签名和实现签名 6、写好重载 1、编写良好泛型函数的准则 编写泛型函数很有趣&#xff0c;并且很容易被类…

递归函数:

含义&#xff1a;自己调自己 递归三要素&#xff1a;定义函数、终止条件和等价关系式 小案例&#xff1a;排序 let arr1 [8, 8, 9, 13, 45, 8, 0, 1, 9, 66];//定义函数function quickSort(arr) {//终止条件if (arr.length < 1) return arr;const baseIndex Math.floor(…

uniapp顶部导航栏被遮住显示问题

解决uniapp顶部导航栏被遮住显示问题 uniapp官方给了处理的方案&#xff0c;即css变量&#xff0c;–status-bar-height&#xff0c;小程序这个值是25px&#xff0c;app则根据实际情况去变化 如下&#xff1a; //头部导航栏 <view class"header"> </view…

软件破解专题01

玩脱壳&#xff1f; 破解的功能&#xff1a;可以把收费软件免费使用 推荐论坛&#xff1a;pyg论坛》www.chinapyg.com 逆向&#xff1a;团队合作&#xff0c;有条件可以参加ctf大赛&#xff0c;这个应该是进步最快的途径 一个很强的开源项目&#xff1a;de4dot 作者…

Redis(主从复制、哨兵模式、集群)概述及部署

Redis&#xff08;主从复制、哨兵模式、集群&#xff09;概述及部署 一、Redis主从复制1、Redis主从复制的概念2、Redis主从复制的作用3、Redis主从复制的流程4、Redis主从复制的搭建 二、Redis 哨兵模式1、哨兵模式的原理2、哨兵模式的作用3、哨兵模式的结构4、哨兵模式的搭建…

springboot校园点餐小程序

校园点餐系统 springboot校园点餐系统小程序 java校园点餐小程序 技术&#xff1a; 基于springbootvue小程序校园点餐系统的设计与实现 运行环境&#xff1a; JAVA版本&#xff1a;JDK1.8 IDE类型&#xff1a;IDEA、Eclipse都可运行 数据库类型&#xff1a;MySql&#xff08;…

SpringSecurity(三):自定义认证数据源(源码+落地实现)。

自定义认证数据源 前言认证流程分析易混梳理AuthenticationManager 与 ProviderManagerProviderManager 与 AuthenticationProvider难点&#xff1a;为什么ProviderManager会有一个parent&#xff1f; 数据源的获取配置AuthenticationManager默认的全局 AuthenticationManager自…

SpringBoot源码分析(1)--@SpringBootApplication注解使用和原理/SpringBoot的自动配置原理详解

文章目录 前言主启动类的配置1、SpringBootApplication注解1.1、SpringBootConfiguration注解验证启动类是否被注入到spring容器中 1.2、ComponentScan 注解ComponentScan 注解解析与路径扫描 1.3、EnableAutoConfiguration注解1.3.1、AutoConfigurationPackage注解1.3.2、Impo…

YOLO系列正负样本分配策略

1、YOLOv3 使用MaxIoUAssigner策略来给gt分配样本&#xff0c;基本上保证每个gt都有唯一的anchor对应&#xff0c;匹配的原则是该anchor与gt的IOU最大且大于FG_THRESH&#xff0c;这种分配制度会导致正样本比较少&#xff0c;cls和bbox分支训练起来可能比较慢。在剩余的anchor…

【微服务架构模式】微服务设计模式

这是微服务架构系列文章的第 3 篇 高可用性、可扩展性、故障恢复能力和性能是微服务的特征。您可以使用微服务架构模式来构建微服务应用程序&#xff0c;从而降低微服务失败的风险。 模式分为三层&#xff1a; 应用模式 应用程序模式解决了开发人员面临的问题&#xff0c;例如数…

vue表格实现一个简单的合并单元格功能

用的是vue2ant-design-vue 但是vue3或者element-ui也是同理 先上效果 需要后端的数据将相同id的放在一起 否则也会有问题 例如&#xff1a; this.list [{id: 1,name: 舟山接收站,...}{id: 2,name: 舟山接收站碳中和LNG,...},{id: 2,name: 舟山接收站碳中和LNG,...} ]// th…

Java-数据结构(一)-java1中有哪些数据结构呢?

这里写目录标题 前言一、为什么需要数据结构&#xff1f;1、低效的操作2、占用过多的内存空间3、困难的数据操作 二、枚举&#xff08;Enumeration&#xff09;1、定义2、关键字3、适用场景 三、 位集合&#xff08;BitSet&#xff09;1、定义2、方法3、适用场景 四、向量&…