Java查询这个月的数据_Java-查询某年某月一个月的数据,以日历的形式展示。

本文介绍了如何在Java后端接口中查询并返回某年某月的数据,以日历形式展示。通过定义`CalendarDate`类存储每日信息,并利用`DateUtils`工具类,根据传入的年份和月份获取当月所有日期的数据。利用`Function`接口处理不同业务需求,实现灵活的数据获取。
摘要由CSDN通过智能技术生成

市场上有些这样的应用,会展示某年某月一个月的数据,比如女神们经常用的“大姨妈”APP,一些游戏的用户签到信息,等等

4e92b592424f73312dad87109f822d69.png

那我们在写后台接口的时候,就需要返回这一个月的数据,今天我就分享一下笔者经常在工作中使用的方法。

数据库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 ->{

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是Java代码实现: ``` import java.util.Scanner; public class Calendar { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入年份:"); int year = scanner.nextInt(); System.out.print("请输入份:"); int month = scanner.nextInt(); // 计算当第一天是星期几 int firstDayOfWeek = getFirstDayOfWeek(year, month); // 打印日历页头部 printCalendarHeader(year, month); // 打印日历页主体 printCalendarBody(firstDayOfWeek, getDaysOfMonth(year, month)); } /** * 获某年某月的天数 */ private static int getDaysOfMonth(int year, int month) { int[] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (month == 2 && isLeapYear(year)) { return 29; } return monthDays[month - 1]; } /** * 判断某年是否为闰年 */ private static boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } /** * 获某年某月第一天是星期几 */ private static int getFirstDayOfWeek(int year, int month) { int[] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 计算1900年11日至当年当1日的天数 int days = 0; for (int i = 1900; i < year; i++) { days += isLeapYear(i) ? 366 : 365; } for (int i = 1; i < month; i++) { days += monthDays[i - 1]; if (i == 2 && isLeapYear(year)) { days++; } } // 计算当1日是星期几 return (days + 1) % 7; } /** * 打印日历页头部 */ private static void printCalendarHeader(int year, int month) { System.out.println(String.format("%d年%d", year, month)); System.out.println("日 一 二 三 四 五 六"); } /** * 打印日历页主体 */ private static void printCalendarBody(int firstDayOfWeek, int daysOfMonth) { int dayCount = 1; // 打印第一行 for (int i = 0; i < firstDayOfWeek; i++) { System.out.print(" "); } for (int i = firstDayOfWeek; i < 7; i++) { System.out.print(String.format("%2d ", dayCount)); dayCount++; } System.out.println(); // 打印其它行 while (dayCount <= daysOfMonth) { for (int i = 0; i < 7; i++) { if (dayCount <= daysOfMonth) { System.out.print(String.format("%2d ", dayCount)); dayCount++; } else { System.out.print(" "); } } System.out.println(); } } } ``` 使用时,通过键盘输入年份和份,程序会输出该日历页。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值