用java编写某年某月的日历_Java-查询某年某月一个月的数据,以日历的形式展示。...
市场上有些这样的应用,会展示某年某月一个月的数据,比如女神们经常用的“大姨妈”APP,一些游戏的用户签到信息,等等
那我们在写后台接口的时候,就需要返回这一个月的数据,今天我就分享一下笔者经常在工作中使用的方法。
数据库DB中存了许多用户的应用数据,每条数据有一个日期字段,可以是Integer类型(yyyyMMdd),可以是String类型(yyyy-MM-dd),还可以是Date类型.
首先定义了一个这样的类来保存某天的数据:
public class CalendarDate{publicInteger day;publicInteger weekDay;publicBoolean isToday;publicT info;
}
四个字段的意思分别是:day-这个月的第几天,weekDay-星期几,isToday-是否是今天,info-该天的用户数据。
请求接口如下,请求需要年和月两个参数:
@GetMapping("/calendar")public List>>calendarDates(@RequestParam Integer year, @RequestParam Integer month) {
Function>> function = day ->{
List datas = new ArrayList<>();
datas.add(day);//DB: datas = tableMapper.findByDay(day);
returnOptional.of(datas);
};returnDateUtils.calendar(year, month, function);
}
重点就是下面封装好的工具类:
public classDateUtils {public static List> calendar(int year, int month, Function>function) {
List> cdList = new ArrayList<>();int monthDays =monthDays(year, month);
CalendarDatecdR;for (int day = 1; day <= monthDays; day++) {
cdR= new CalendarDate<>();
cdR.day=day;
LocalDate date=LocalDate.of(year, month, day);
cdR.weekDay=dayOfWeek(date);
cdR.isToday=isToday(date);if (function != null) {
Optional optional =function.apply(date.toString());if(optional.isPresent()) {
cdR.info=optional.get();
}
}
cdList.add(cdR);
}returncdList;
}private static booleanisToday(LocalDate date) {
LocalDate today=LocalDate.now();return date.getYear() == today.getYear() &&date.getMonth()== today.getMonth() &&date.getDayOfMonth()==today.getDayOfMonth();
}private static intdayOfWeek(LocalDate date) {return null == date ? 0: date.getDayOfWeek().getValue();
}private static int monthDays(int year, intmonth) {
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month- 1);
calendar.set(Calendar.DATE,1);
calendar.roll(Calendar.DATE,-1);returncalendar.get(Calendar.DATE);
}
}
View Code
针对不同的业务要求,编写不一样的function函数,就可以返回日历形式的用户数据了。
用java编写某年某月的日历_Java-查询某年某月一个月的数据,以日历的形式展示。...相关推荐
- Oracle获取一周前,一个月前,一年前的日期,一个月的总天数、一个月的全部日期
目的:Oracle获取一周前,一个月前,一年前的日期,一个月的总天数.一个月的全部日期 1.获取10分钟前的日期 select sysdate,sysdate-interval '10' minute ...
- java取得一月_Java里,如何得到一个月有多少天
展开全部 按照你62616964757a686964616fe78988e69d8331333361326239的要求,如何得到一个月有多少天,这里并没有说是什么年份,所以默认当年(不同年份的月份天数 ...
- 写一个构建复杂数据的日历组件 Kalendar
需求:我们经常会在一些旅游.订票.酒店的页面中看到一些日历,这些日历有公历.农历.节假日.非节假日(调休)的标注,同时还有产品业务上的信息,比如 票价.余票等等.那现在开始造造轮子了,首先这个组件应该 ...
- python datetime 加一个月_Python 如何计算当前时间减少或增加一个月
问题 今天在之前的代码中发现了一个bug,有个计算当前时间减少一个月的函数,其报出下面的异常信息: ValueError: day is out of range for month 看一下代码: i ...
- php 上一个月的开始和结束,php获取上一个月的开始与结束时间遇到的问题
改正之前: $_lastMonthStart = date('Y-m-1 00:00:00', strtotime("-1 month")); $_lastMonthEnd = d ...
- 一年中最后一个月的最后一天说说_2020只剩最后一个月的励志说说致自己
所有的努力,不是为了让别人觉得你了不起,而是为了能让自己打心眼里看得起自己.2021进入倒计时了,努力加油吧 1.面对困难.挫折.挑战只要你肯相信自己,不断努力的付出,哪怕你现在的人生是从零开始,你都 ...
- Android获取一个月前的日期,Android DatePicker Fragment返回一个月前的日期
好,这很奇怪.我有一个非常简单的DatePicker对话框.问题是,无论我选择什么日期,返回的值都恰好是所选日期的一个月.这是我的代码: 活动 btnEventDate.setOnClickListe ...
- 助理电子工程师第二个月的实习总结,问题很多的一个月
年后因为疫情博主等到3月6号才去上班实习,到现在算第二个月吧.这一个月感觉做了很多事情,不像是第一个月一样只是打打杂,画画大佬项目的PCB,了解公司的产品,这个月实际去做项目,出了不少的问题,心情很复 ...
- java编写在输入特定日期之间_java实现输入日期
/* 从键盘输入一个日期,格式为 yyyy-M-d 要求计算该日期与 1949 年 10 月 1 日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:1949-11-1 程 ...
- 用Java 编写菜单价格和的程序_Java程序设计基础作业目录(作业笔记)
持续更新中............. Java程序设计基础笔记 • [目录] 我的大学笔记>>> 第1章 初识Java>>> 1.1.4 学生成绩等级流程图练习 1 ...
最新文章
- ADO.NET 快速入门(四):从数据库填充 DataSet
- 【Oracle Database 12c新特性】ASM Scrubbing Disk Groups
- 小记css的margin collapsing
- ​新冠疫情给 CTO 们带来的几点启示
- 前端笔记(1-20)
- cache数据库教程
- 2021最新15个App跨平台开发框架
- 跑马灯的一些使用心得
- 最新鸽哒IM即时通讯系统源码+带安装教程
- 华为企业交换机ACL经典案例
- vue+videojs视频播放、视频切换、视频断点分段上传
- C语言 弹小球 小游戏(控制台)
- Hadoop2.x和3.x版本区别
- 根据OVF文件在VMware Workstation中恢复虚拟机
- 虽败犹荣的McCain
- 五款剪辑软件,那个更好用?
- java awt 简单计算器,JAVA Swing 开发简易计算器(上)
- CTFshow_MISC入门_图片篇(基础操作信息附加)wp
- ifix从sqlserver里读数据_Ifix学习(7)
- 微信状态听歌怎么添加歌曲 微信状态听歌如何设置网易云音乐
热门文章
- 三星2610打印机故障INTERNAL ERROR - Incomplete Session by time out
- java简单封装FusionChartsFree.
- Python之计算机算法基础总结(借鉴、整理)、排序算法、查找算法
- 状态反馈控制与状态观测器设置以及利用LQR方法求取状态反馈矩阵
- B站还有多久成为天涯
- exe机器码加密视频如何破解提取脱壳
- MS Office办公,数学公式编辑器,visio2019 详细安装教程
- 《我家侯爷不宠我》盛大开机,丹青映画国漫IP再次“破壁”
- 红旗6.0 sp2 永中office2009不能启动的原因
- 使用casewhen来判断执行不同的sql