日期工具类-汇总当日到年底还剩下多少天

2024-06-12 17:04

本文主要是介绍日期工具类-汇总当日到年底还剩下多少天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    /*** @return 返回当日到当年最后一天一共多少天* @param currentDateStr 指定日期* @param pattern        日期类型* daysOfFeb: 二月天数* dayOfMonth:当日* j: 当月* arrThirtyFirst: 31天数组* arrThirty:30天数组*  flag:   标志位 用来限定是否第一次访问,如果是第一次计算当月剩余天数,否则累加剩余天数*/public static int remainDays(String currentDateStr) {LocalDate now;if (StringUtils.isBlank(currentDateStr)) {now = LocalDate.now();} else {now = stringToLocalDate(currentDateStr, com.alibaba.excel.util.DateUtils.DATE_FORMAT_10);}int year = now.getYear();// 平年闰年判断boolean yearFlag = (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);int daysOfFeb = (yearFlag) ? 29 : 28;int dayOfMonth = now.getDayOfMonth();int j = now.getMonthValue();int[] arrThirtyFirst = {1, 3, 5, 7, 8, 10, 12};List<Integer> handledArrThirtyFirst = Arrays.stream(arrThirtyFirst).boxed().collect(Collectors.toList());int[] arrThirty = {4, 6, 9, 11};List<Integer> handledArrThirty = Arrays.stream(arrThirty).boxed().collect(Collectors.toList());boolean flag = true;int total = 0;if (j == 2) {total += daysOfFeb;}while (j > 0 && j < 13) {if (flag) {if (handledArrThirtyFirst.contains(j)) {total += 31 - dayOfMonth;}if (handledArrThirty.contains(j)) {total += 30 - dayOfMonth;}flag = false;} else {if (handledArrThirtyFirst.contains(j)) {total += 31;}if (handledArrThirty.contains(j)) {total += 30;}}j++;}return total;}

验证

    @Testpublic void testRemainDays() {int count = DateUtil.remainDays(null);log.info("{}年还剩下{}天", LocalDate.now().getYear(), count);int cou = DateUtil.remainDays("2023-11-11");log.info("2023年还剩下{}天", cou);int first = DateUtil.remainDays("2024-12-01");log.info("2024年还剩下{}天", first);int second = DateUtil.remainDays("2024-02-01");log.info("2024年还剩下{}天", second);// 测试用例/*** 2024.06.12* 2024.02.01* 2024.12.01* 参数为空*/}

14:44:38.864 [main] INFO com.geekmice.springbootselfexercise.date.NoDaoTest - 2024年还剩下202天
14:44:38.882 [main] INFO com.geekmice.springbootselfexercise.date.NoDaoTest - 2023年还剩下50天
14:44:38.882 [main] INFO com.geekmice.springbootselfexercise.date.NoDaoTest - 2024年还剩下30天
14:44:38.883 [main] INFO com.geekmice.springbootselfexercise.date.NoDaoTest - 2024年还剩下335天

这篇关于日期工具类-汇总当日到年底还剩下多少天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054814

相关文章

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Redis客户端工具之RedisInsight的下载方式

《Redis客户端工具之RedisInsight的下载方式》RedisInsight是Redis官方提供的图形化客户端工具,下载步骤包括访问Redis官网、选择RedisInsight、下载链接、注册... 目录Redis客户端工具RedisInsight的下载一、点击进入Redis官网二、点击RedisI

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins