市场上有些这样的应用,会展示某年某月一个月的数据,比如女神们经常用的“大姨妈”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-查询某年某月一个月的数据,以日历的形式展示。...相关推荐

  1. Oracle获取一周前,一个月前,一年前的日期,一个月的总天数、一个月的全部日期

    目的:Oracle获取一周前,一个月前,一年前的日期,一个月的总天数.一个月的全部日期 1.获取10分钟前的日期 select sysdate,sysdate-interval '10' minute ...

  2. java取得一月_Java里,如何得到一个月有多少天

    展开全部 按照你62616964757a686964616fe78988e69d8331333361326239的要求,如何得到一个月有多少天,这里并没有说是什么年份,所以默认当年(不同年份的月份天数 ...

  3. 写一个构建复杂数据的日历组件 Kalendar

    需求:我们经常会在一些旅游.订票.酒店的页面中看到一些日历,这些日历有公历.农历.节假日.非节假日(调休)的标注,同时还有产品业务上的信息,比如 票价.余票等等.那现在开始造造轮子了,首先这个组件应该 ...

  4. python datetime 加一个月_Python 如何计算当前时间减少或增加一个月

    问题 今天在之前的代码中发现了一个bug,有个计算当前时间减少一个月的函数,其报出下面的异常信息: ValueError: day is out of range for month 看一下代码: i ...

  5. php 上一个月的开始和结束,php获取上一个月的开始与结束时间遇到的问题

    改正之前: $_lastMonthStart = date('Y-m-1 00:00:00', strtotime("-1 month")); $_lastMonthEnd = d ...

  6. 一年中最后一个月的最后一天说说_2020只剩最后一个月的励志说说致自己

    所有的努力,不是为了让别人觉得你了不起,而是为了能让自己打心眼里看得起自己.2021进入倒计时了,努力加油吧 1.面对困难.挫折.挑战只要你肯相信自己,不断努力的付出,哪怕你现在的人生是从零开始,你都 ...

  7. Android获取一个月前的日期,Android DatePicker Fragment返回一个月前的日期

    好,这很奇怪.我有一个非常简单的DatePicker对话框.问题是,无论我选择什么日期,返回的值都恰好是所选日期的一个月.这是我的代码: 活动 btnEventDate.setOnClickListe ...

  8. 助理电子工程师第二个月的实习总结,问题很多的一个月

    年后因为疫情博主等到3月6号才去上班实习,到现在算第二个月吧.这一个月感觉做了很多事情,不像是第一个月一样只是打打杂,画画大佬项目的PCB,了解公司的产品,这个月实际去做项目,出了不少的问题,心情很复 ...

  9. java编写在输入特定日期之间_java实现输入日期

    /* 从键盘输入一个日期,格式为 yyyy-M-d 要求计算该日期与 1949 年 10 月 1 日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:1949-11-1 程 ...

  10. 用Java 编写菜单价格和的程序_Java程序设计基础作业目录(作业笔记)

    持续更新中............. Java程序设计基础笔记 • [目录] 我的大学笔记>>> 第1章 初识Java>>> 1.1.4 学生成绩等级流程图练习 1 ...

最新文章

  1. ADO.NET 快速入门(四):从数据库填充 DataSet
  2. 【Oracle Database 12c新特性】ASM Scrubbing Disk Groups
  3. 小记css的margin collapsing
  4. ​新冠疫情给 CTO 们带来的几点启示
  5. 前端笔记(1-20)
  6. cache数据库教程
  7. 2021最新15个App跨平台开发框架
  8. 跑马灯的一些使用心得
  9. 最新鸽哒IM即时通讯系统源码+带安装教程
  10. 华为企业交换机ACL经典案例
  11. vue+videojs视频播放、视频切换、视频断点分段上传
  12. C语言 弹小球 小游戏(控制台)
  13. Hadoop2.x和3.x版本区别
  14. 根据OVF文件在VMware Workstation中恢复虚拟机
  15. 虽败犹荣的McCain
  16. 五款剪辑软件,那个更好用?
  17. java awt 简单计算器,JAVA Swing 开发简易计算器(上)
  18. CTFshow_MISC入门_图片篇(基础操作信息附加)wp
  19. ifix从sqlserver里读数据_Ifix学习(7)
  20. 微信状态听歌怎么添加歌曲 微信状态听歌如何设置网易云音乐

热门文章

  1. 三星2610打印机故障INTERNAL ERROR - Incomplete Session by time out
  2. java简单封装FusionChartsFree.
  3. Python之计算机算法基础总结(借鉴、整理)、排序算法、查找算法
  4. 状态反馈控制与状态观测器设置以及利用LQR方法求取状态反馈矩阵
  5. B站还有多久成为天涯
  6. exe机器码加密视频如何破解提取脱壳
  7. MS Office办公,数学公式编辑器,visio2019 详细安装教程
  8. 《我家侯爷不宠我》盛大开机,丹青映画国漫IP再次“破壁”
  9. 红旗6.0 sp2 永中office2009不能启动的原因
  10. 使用casewhen来判断执行不同的sql