layui时间选择器选择周和季度


最近一个后台管理页面数据查询时间间隔要有:日,周,月,季度,年;UI组件我们用的layui,官方dome只有日月年(直接去ctrl+c ctrl+v就好了,在这就不多说了);So我们要自定义周和季度,直接上代码:

组件引用:(记得换成你的地址)
 <!-- layui框架样式 --><link type="text/css" href="/static/plugins/layui/css/layui.css" rel="stylesheet" /><!-- layui框架js --><script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
html:
 <div class=" layui-form-item"><div class="layui-inline layui-form"><div class="layui-input-inline"><select name="type" id="selectedOption" lay-filter="college"><option value="day" selected="selected">按日统计</option><option value="week">按周统计</option><option value="month">按月统计</option><option value="quarter">按季度统计</option><option value="year">按年统计</option></select></div><label class="layui-inline" id="worldlable" style="width: 190px;"><input id="worldId" type="text" class="layui-input laydate-test" data-type="date" autocomplete="off"></label></div></div>
js:

周:用的时间区间的,选择任意日期,显示选择日期的周,例:选择 2020-08-05 显示 2020-08-03~2020-08-09;因为我们这边后台定的请求数据格式是:xxxx-xx (2020年-18周)就去网上荡了个日期转为周的;
季度:这个有点取巧的,用的是月份的取前面4个月份改了下文字;

    layui.use(['form', 'upload', 'layer', 'laydate', 'jquery'], function () {let form = layui.form;let layer = layui.layer;let laydate = layui.laydate;laydate.render({elem: '#worldId',max: genTime('day'),value: genTime('day'),type: 'date'});form.on('select(college)', function (data) {let opt = $("#selectedOption").val();let ele = $("#selectedOption");$("#worldId").remove();$("#worldlable").html('<input id="worldId" type="text" class="layui-input laydate-test" data-type="date" autocomplete="off">');// 月if (opt == "month") {laydate.render({elem: '#worldId',type: 'month',max: genTime('month'),value: genTime('month'),btns: ['clear', 'confirm']});// 日} else if (opt == "day") {  laydate.render({elem: '#worldId',type: 'date',max: genTime('day'),value: genTime('day'),btns: ['clear', 'confirm']});// 周} else if (opt == "week") {renderWeekDate('#worldId', '');// 季度} else if (opt == "quarter") {renderSeasonDate('#worldId', '');// 年} else if (opt == "year") {laydate.render({elem: '#worldId',type: 'year',max: genTime('day'),value: genTime('year'),btns: ['clear', 'confirm']});}});// 周function renderWeekDate(ohd, sgl) {let ele = $(ohd);laydate.render({elem: ohd,type: 'date',max: genTime('day'),format: "yyyy-MM-dd~yyyy-MM-dd",btns: ['clear', 'confirm'],done: function (value, date, endDate) {if (value != "" && value.length > 0) {let today = new Date(value.substring(0, 10));let weekday = today.getDay();let monday;let sunday;if (weekday == 0) {monday = new Date(1000 * 60 * 60 * 24 * (weekday - 6) + today.getTime());} else {monday = new Date(1000 * 60 * 60 * 24 * (1 - weekday) + today.getTime());}if (weekday == 0) {sunday = today;} else {sunday = new Date(1000 * 60 * 60 * 24 * (7 - weekday) + today.getTime());}let month = monday.getMonth() + 1;if (month < 10) {month = "0" + month;}let day1 = monday.getDate();if (day1 < 10) {day1 = "0" + day1;}let start = "" + monday.getFullYear() + "-" + month + "-" + day1;let month2 = sunday.getMonth() + 1;if (month2 < 10) {month2 = "0" + month2;}let day2 = sunday.getDate();if (day2 < 10) {day2 = "0" + day2;}let end = "" + sunday.getFullYear() + "-" + month2 + "-" + day2;ele.val(start + "~" + end);} else {ele.val('');}}});}// 季度function renderSeasonDate(ohd, sgl) {let ele = $(ohd);laydate.render({elem: ohd,type: 'month',format: 'yyyy-M',btns: ['clear', 'confirm'],ready: function (value, date, endDate) {let hd = $("#layui-laydate" + ele.attr("lay-key"));if (hd.length > 0) {hd.click(function () {quarter($(this));});}quarter(hd);},done: function (value, date, endDate) {if (!isNull(date) && date.month > 0 && date.month < 5) {ele.attr("startDate", date.year + "-" + date.month);} else {ele.attr("startDate", "");}if (!isNull(endDate) && endDate.month > 0 && endDate.month < 5) {ele.attr("endDate", endDate.year + "-" + endDate.month)} else {ele.attr("endDate", "");}}});}});function genTime(opt) {let now = new Date();let year = now.getFullYear();let mth = now.getMonth();let day = now.getDate();let month = mth + 1;if (month < 10) {month = '0' + month}if (day < 10) {day = '0' + day}let str;if (opt == 'day') {str = year + '-' + month + '-' + day;} else if (opt == 'month') {str = year + '-' + month;}return str;}function quarter(thiz) {let mls = thiz.find(".laydate-month-list");mls.each(function (i, e) {$(this).find("li").each(function (inx, ele) {let cx = ele.innerHTML;if (inx < 4) {ele.innerHTML = cx.replace(/月/g, "季度");} else {ele.style.display = "none";}});});}function isNull(quarter) {if (quarter == null || typeof (quarter) == "undefined" || quarter == "") return true;return false;}/*** 日期转为周 格式2020-07-14* @param {String} dateString 日期*/function getYearWeek(dateString) {let da = dateString;//日期格式2015-12-30//当前日期let date1 = new Date(da.substring(0, 4), parseInt(da.substring(5, 7)) - 1, da.substring(8, 10));//1月1号let date2 = new Date(da.substring(0, 4), 0, 1);//获取1月1号星期(以周一为第一天,0周一~6周日)let dateWeekNum = date2.getDay() - 1;if (dateWeekNum < 0) { dateWeekNum = 6; }if (dateWeekNum < 4) {//前移日期date2.setDate(date2.getDate() - dateWeekNum);} else {//后移日期date2.setDate(date2.getDate() + 7 - dateWeekNum);}let d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000);if (d < 0) {let date3 = (date1.getFullYear() - 1) + "-12-31";return getYearWeek(date3);} else {//得到年数周数let year = date1.getFullYear();let week = Math.ceil((d + 1) / 7);return year + "-" + week;}}
番外篇:

还是那句话万一一不小心对你有点用,点个赞!谢谢了!~

layui时间选择器选择周和季度相关推荐

  1. Layui时间选择器,Layui时间控件选择时间范围的方法

    官方文档:https://www.layui.site/doc/modules/laydate.html 通用时间渲染函数 function renderTime(elem, type, value, ...

  2. layui时间选择器点击事件

    问题 最近写了一个项目用到了layui框架,其中在用到时间选择器控件的时候想做一个点击一个时间可以触发一个事件,然后这个事件可以获取点击的时间,最终通过获取的时间来进行数据库查找,但是无奈怎样也触发不 ...

  3. elementUI的时间选择器-选择日期范围,选择时间后获取时间的格式问题

    选择日期范围: value-format="yyyy-MM-dd" //加上这行代码,不然获取的时间格式用不了 <el-date-pickerv-model="sh ...

  4. layui 时间选择器

    <div class="layui-col-xs8"><div class="layui-inline"><label>开始 ...

  5. bootstrap时间选择器-datetimepicker

    接上一篇文章,写引用不同的js的时间选择器,参考连接:https://github.com/uxsolutions/bootstrap-datepicker 引入连接为: <link href= ...

  6. element-UI组件之日期时间选择器与时间格式转化

    element-UI组件之日期时间选择器与时间格式转化 日期选择器与时间选择器的一般使用 日期时间选择器 选择日期时间点 选择日期范围 日期选择器 月份范围选择器 禁选日期 用time.getTime ...

  7. 使用layui做数据表格使用下拉菜单并实现删除功能和时间选择器

    一.再layui官网上查看数据表格的使用方式 查看代码实例不使用 toolbar工具栏,分页功能之类的就不在创建渲染实例的声明 二.根据你要完成表格设计稿完成数据表格中使用下拉菜单和时间选择器  以图 ...

  8. Layui时间插件laydate只选择时分

    一.说明 二.分析 三.效果 四.代码 一.说明 需要一个只选择时分的控件,首先想到的是laydate,然后看一下控件的类型 type 可选值 名称 用途 year 年选择器 只提供年列表选择 mon ...

  9. my97DatePicker选择年、季度、月、周、日

    一直以来,用的最多的就是my97DatePicker获得年月日的方法,今天突然逛到了这篇文章,留下来,以备以后使用 自己写的一个:获取年月,并从下个月开始计算 [html] view plain co ...

最新文章

  1. 2016年IoT和新的逃逸技术将会引领威胁态势
  2. echarts 地图 scatter点击事件_React实现高亮可点击地图
  3. 新浪微博开放平台API中page参数的使用方法
  4. 【小白学习PyTorch教程】六、基于CIFAR-10 数据集,使用PyTorch 从头开始​​构建图像分类模型...
  5. 隔壁大爷都会网络布线啦、搞起来搞起来
  6. [知识图谱实战篇] 四.HTML+D3+CSS绘制关系图谱
  7. 万云:区块链可帮助公证行业创新改革,为互联网公证打下基础
  8. C#的变迁史01 - C# 1.0篇
  9. JS Math.sin() 与 Math.cos() 用法
  10. HDFS的读写限流方案
  11. linux 中断分上下部分的原因
  12. vb中WindowsMediaPlayer的常用属性和方法
  13. 制作U盘启动的并可保持更改更新和设置的BT4最终版完全手册
  14. 光栅衍射C语言程序,基于matcom的光栅衍射仿真程序
  15. Unit 11 电话转接
  16. 【Android智能硬件开发】【009】安卓读写GPIO
  17. 使用Windows聚焦当壁纸
  18. 苹果移动设备(iPhone/iPad)分辨率汇总
  19. 【数据库考试】考研复试必备数据库试题
  20. [功能改进]Ctrl+Enter直接提交评论

热门文章

  1. 痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具NXP-MCUBootUtility用户指南
  2. java如何新增单据_T100——单据别的新增、修改设置
  3. 泰拉瑞亚服务器搭建基于 TShockubuntu
  4. windows10下theano启用gpu:CUDA + Anaconda
  5. 关于Linux中使用USE(使用率/饱和度/错误)方法分析系统性能的一些笔记
  6. 360安全,3Q大战一夜爆红
  7. 数据仓库-OLAP操作
  8. 游戏显示计算机丢失文件怎么办,安全系统检测到游戏文件缺失或损坏,请获取正确文件进行替换。怎么办?...
  9. 一次网站性能优化经历
  10. python中通过xlwings判断excel是否存在筛选,并取消筛选