首页 > 其他分享 >日期工具类

日期工具类

时间:2024-09-04 09:14:52浏览次数:8  
标签:String temp int param 日期 DateTimeFormatter 工具 LocalDate

import cn.hutool.json.JSONUtil;

import java.time.LocalDate;
import java.time.Year;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;

public class DateUtil {

    /**
     * 获取最近 n 日日期数据
     * @param n
     * @param containCurDay
     * @return
     */
    public static String[] getLastDays(int n, boolean containCurDay) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate currentDate = LocalDate.now();// 获取当前日期
        String[] dates = new String[n];
        int temp = n;
        if(containCurDay){
            temp = (n - 1);
        }
        for (int i = 0; i < n; i++) {
            LocalDate localDate = LocalDate.from(currentDate).minusDays(temp-i);
            dates[i] = localDate.format(formatter);
        }
        return dates;
    }

    /**
     * 获取最近 n 月日期数据
     * @param n
     * @param containCurMonth  是否包含当前月
     * @return   ["2024-07","2024-08","2024-09"]
     */
    public static String[] getLastMonths(int n, boolean containCurMonth) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
        LocalDate currentDate = LocalDate.now();// 获取当前日期
        String[] months = new String[n];
        int temp = n;
        if(containCurMonth){
            temp = (n - 1);
        }
        for (int i = 0; i < n; i++) {
            YearMonth yearMonth = YearMonth.from(currentDate).minusMonths(temp-i);
            months[i] = yearMonth.format(formatter);
        }
        return months;
    }

    /**
     * 获取最近 n 年日期数据
     * @param n
     * @param containCurYear
     * @return  ["2022","2023","2024"]
     */
    public static String[] getLastYears(int n, boolean containCurYear) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
        LocalDate currentDate = LocalDate.now();// 获取当前日期
        String[] years = new String[n];
        int temp = n;
        if(containCurYear){
            temp = (n - 1);
        }
        for (int i = 0; i < n; i++) {
            Year year = Year.from(currentDate).minusYears(temp-i);
            years[i] = year.format(formatter);
        }
        return years;
    }

    public static void main(String[] args) {
        // 获取最近12个月数据
        String[] last12Months = DateUtil.getLastMonths(12, false);
        System.out.println(JSONUtil.toJsonStr(last12Months));

        // 获取最近3年日期数据
        String[] last3Years = DateUtil.getLastYears(3, true);
        System.out.println(JSONUtil.toJsonStr(last3Years));

        // 获取最近3年日期数据
        String[] last30Days = DateUtil.getLastDays(30, true);
        System.out.println(JSONUtil.toJsonStr(last30Days));

    }

}

 

标签:String,temp,int,param,日期,DateTimeFormatter,工具,LocalDate
From: https://www.cnblogs.com/sunhao1234/p/18395793

相关文章

  • AI驱动测试管理工具会有哪些发展前景呢?
     在软件测试领域,人工智能(AI)的出现犹如一场技术革命,改变了传统的测试管理方式。随着AI技术的迅速发展,它将如何进一步提升测试管理的效率与准确性?未来的AI驱动测试管理工具又会带来哪些令人期待的创新呢?我们不禁要问,AI驱动的测试管理工具究竟会走向何方?它们能否真正实现智能化......
  • Redis性能压测、监控工具及优化方案
    当今的互联网应用中,Redis作为一种高性能的键值数据库,扮演着不可或缺的角色。它在处理海量数据和高并发请求方面表现卓越。然而,随着业务规模的扩大,如何确保Redis的性能保持在最佳状态,成为了开发者和运维人员不可忽视的难题。在面对复杂业务场景时,如何进行Redis的性能压测?有哪些......
  • SM2259XT2、SM2259XT3量产工具开启“调整不对称CH/CE组态”功能
    慧荣SM2259XT2、SM2259XT3量产工具开启“调整不对称CH/CE组态”功能:1、在量产部落下载量产工具后,解压量产工具压缩包;2、找到并打开量产工具文件夹中的“UFD_MP”文件夹,用记事本或者Notepad++打开“Setting.set”文件;3、在“[OPTION]”下添加一行“EnAdjUnbalanceMap=1”,并保......
  • CMake构建学习笔记14-依赖库管理工具
    如果说做C/C++开发最大的痛点是什么,那么一定是缺少一个官方的统一的包管理器。认真的说,如果你要用C/C++干点什么,至少需要(Windows系统下):C/C++语言本身、标准库、以及操作系统API几乎干不了什么,除非你真的想从零开始造轮子。开始找一些现成的实现组成依赖库。最好看能不能找到预......
  • Leangoo领歌Scrum工具:Sprint Backlog迭代管理的最佳实践
    ​在敏捷开发中,迭代管理是确保项目持续推进、不断优化的重要环节。有效的迭代管理能够帮助团队快速响应变化,持续交付高质量产品。Leangoo是一款免费的敏捷项目管理工具,为团队提供了直观、高效的看板管理方式来管理迭代过程。本文将探讨如何使用Leangoo进行迭代管理,帮助团队更好......
  • 【Python插件入门】第10篇(完结篇):插件常用工具类分享
    【Python插件入门】第10篇(完结篇):插件常用工具类分享原创金蝶云·星空-BOS平台金蝶云·星空-基础架构金蝶云·星空-学习笔记金蝶云·星空-协同开发更多 CQ周玉立已关注149人赞赏了该文章 1.8万次浏览 未经作者许可,禁止转载编辑于2022年08月22日09:......
  • IEC101、IEC103、IEC104、Modbus报文解析工具
    一、概述国际电工委员会第57技术委员会(IECTC57)1995年出版IEC60870-5-101后,得到了广泛的应用。为适应网络传输,2000年IECTC57又出版了IEC60870-5-104:2000《远东设备及系统第5-104部分:传输规约-采用标准传输协议集的IEC60807-5-1网络访问》。为规范该标准的国内应用,全国电......
  • Java应用的性能监控与分析工具
    Java应用的性能监控与分析工具大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java应用开发和运维过程中,性能监控与分析是保证应用健康运行的重要环节。有效的监控和分析工具可以帮助开发者及时发现性能瓶颈,优化应用性能。本文将介绍一些常用的Java......
  • 四款主流 Docker 可视化工具,免费又好用 - 推荐使用朵云
    前言Docker提供了命令行工具来管理Docker的镜像和运行Docker的容器。我们也可以使用图形工具来管理Docker。目前,主流的Docker图形工具有DockerClouds、DockerUl、Portainer和Shipyard。DockerClouds朵云DockerClouds朵云是一款最简单的,单机环境中的管理Docke......
  • 基于Vue的低代码,6K star的可视化表单设计器工具,多端适配
    FormCreate 是一款基于Vue的低代码可视化表单设计器工具,它通过数据驱动的方式实现了表单的动态渲染。用户仅需通过直观的界面即可快速构建出功能完备的表单。FormCreate 的主要特性包括:多端适配:支持PC和移动设备,内置丰富的插件和强大的功能。国际化:提供中文、英文、......