根据起始截止日期获取中间日期并且动态展示到日历上

编程入门 行业动态 更新时间:2024-10-22 17:35:09

根据起始<a href=https://www.elefans.com/category/jswz/34/1722369.html style=截止日期获取中间日期并且动态展示到日历上"/>

根据起始截止日期获取中间日期并且动态展示到日历上

根据后端起始截止日期获取中间日期

并将这些日期放到mark里面进行展示

有前后端交互,基于layui、ssm、mybatisPlus、html、javascript

推荐和ayui文档日期时间的模块选择一起看

.html#mark

先看效果

第一步初始化:

1.数据库字段定义

2.对应的实体

public class Holiday extends BaseEntity {/*** 节假日名称*/private String holidayName;/*** 节假日开始时间*/private LocalDateTime holidayStartTime;/*** 节假日结束时间*/private LocalDateTime holidayEndTime;
}

3.前端嵌套layui日历

<div class="layui-card-body"><span id="testView"></span><div id="test2"></div></div>
layui.use(['laydate'], function(){var laydate = layui.laydate;laydate.render({elem: '#test2',position: 'static',btns: ['now'],change: function(value, date){ //监听日期被切换lay('#testView').html(value);},theme: 'grid',mark:holiday    //holiday是我在***最外层***自定义的变量});

第二步研究问题:mark放的其实很像json数组或者map

第三步功能实现:

3.js功能-------此功能最好写在上面js功能的前边

var holiday;
$(document).ready(function () {$.ajax({url: "holiday/getdatejson",type: "get",async: false,success: function (data) {if (data.flag) {console.log(data.map);holiday = data.map;}console.log(holiday);},error: function() {console.log('请求失败~');},});
})

后端

我定义了一个回参接收类 ,此处没有写get、set

public class ResultMsg {private Boolean flag;private String msg;private Map<String,Object> map = new HashMap<>();public static ResultMsg success(){ResultMsg resultMsg = new ResultMsg();resultMsg.flag=true;resultMsg.msg = "处理成功";return resultMsg;}public static ResultMsg failed(){ResultMsg resultMsg = new ResultMsg();resultMsg.flag=false;resultMsg.msg = "处理失败";return resultMsg;}public ResultMsg add(String name, Object value){map.put(name,value);return this;}
}

定义了一个似乎相对来说没有用的类,本来是想做list集合,后来发现直接放入map里面更好,其实后面Controller和Service写复杂了,但是我懒得改了233

public class nameToDate {String date;String name;
}

 

Controller层------把拿到的《日期和名字的集合》都放到map集合里面

    @GetMapping("getdatejson")@ResponseBodypublic ResultMsg getdatejson() throws ParseException {ResultMsg resultMsg = ResultMsg.success();List<nameToDate> res = holidayService.getDatesJson();for (int i = 0; i <res.size() ; i++) {resultMsg.add(res.get(i).getDate(),res.get(i).getName());}return  resultMsg;}

 

Service层------这里是遍历拿到中间日期和名字,为什么做了几次转换就是因为我数据库存的其实是datetime,但是我只需要年月日就够了,使用了Mybatisplus

public List<nameToDate> getDatesJson() throws ParseException {
//        查所有List<Holiday> holiday=list();
//        设置回参listList<nameToDate> res=new ArrayList<nameToDate>();
//        开始遍历for (int i = 0; i <holiday.size() ; i++) {
//            res.get(i).setName(holiday.get(i).getHolidayName());
//            格式化成日期字符串再强转DateString holidayStartTime= DateUtil.format(holiday.get(i).getHolidayStartTime(),"yyyy-MM-dd");String holidayEndTime=DateUtil.format(holiday.get(i).getHolidayEndTime(),"yyyy-MM-dd");SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );Date d1 = sdf1.parse(holidayStartTime);Date d2 = sdf1.parse(holidayEndTime);
//            遍历的日期Calendar dd = Calendar.getInstance();  //定义日期实例
//            起始日期放进去dd.setTime(d1);
//            开始遍历while(d1pareTo(d2)<=0){            //小于结束日期dd.setTime(d1);nameToDate nametodate=new nameToDate();   //定义单个回参实例nametodate.setName(holiday.get(i).getHolidayName());nametodate.setDate(sdf1.format(dd.getTime()));res.add(nametodate);dd.add(dd.DATE,1);           //当前日期加一天d1 = dd.getTime();            //重新赋值起始日期}}return res;}

到此为止就差不多实现了上述功能,

问题:1.其实我没怎么做参数的校验,这个是一个比较严肃的问题

2.功能写复杂了

3.出现日期相同的最新的会把老一点的覆盖掉

如果有更好的方法或者优化请在楼下评论,谢谢!

更多推荐

根据起始截止日期获取中间日期并且动态展示到日历上

本文发布于:2024-03-03 15:43:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707707.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:截止日期   日历   日期   动态

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!