java获取两个时间之间的所有日期、月份、年份,返回列表

2023-11-16

 需求描述

  • 输入开始时间和结束时间,获取时间范围内的所有日期,月份、年份

    (输入可以为"yyyy-MM-dd HH:mm:ss"或者"yyyy-MM-dd")

一、输入开始时间和结束时间,返回时间范围内中的所有日期列表 

/**
     * 传入两个时间范围,返回这两个时间范围内的所有日期,并保存在一个集合中
     *
     * @param beginTime
     * @param endTime
     * @return
     * @throws Exception
     */
    public static List<String> findEveryDay(String beginTime, String endTime)
            throws Exception {
        //创建一个放所有日期的集合
        List<String> dates = new ArrayList();
 
        //创建时间解析对象规定解析格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
        //将传入的时间解析成Date类型,相当于格式化
        Date dBegin = sdf.parse(beginTime);
        Date dEnd = sdf.parse(endTime);
 
        //将格式化后的第一天添加进集合
        dates.add(sdf.format(dBegin));
 
        //使用本地的时区和区域获取日历
        Calendar calBegin = Calendar.getInstance();
 
        //传入起始时间将此日历设置为起始日历
        calBegin.setTime(dBegin);
 
        //判断结束日期前一天是否在起始日历的日期之后
        while (dEnd.after(calBegin.getTime())) {
 
            //根据日历的规则:月份中的每一天,为起始日历加一天
            calBegin.add(Calendar.DAY_OF_MONTH, 1);
 
            //得到的每一天就添加进集合
            dates.add(sdf.format(calBegin.getTime()));
            //如果当前的起始日历超过结束日期后,就结束循环
        }
        return dates;
    }

测试输出结果:

 

二、输入开始时间和结束时间,返回时间范围内中的所有月份列表

/**
     * 获取两个日期之间的所有月份 (年月)
     *
     * @param startTime
     * @param endTime
     * @return:list
     */
    public static List<String> getMonthBetweenDate(String startTime, String endTime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        // 声明保存日期集合
        List<String> list = new ArrayList<>();
        try {
            // 转化成日期类型
            Date startDate = sdf.parse(startTime);
            Date endDate = sdf.parse(endTime);
 
            //用Calendar 进行日期比较判断
            Calendar calendar = Calendar.getInstance();
            while (startDate.getTime() <= endDate.getTime()) {
 
                // 把日期添加到集合
                list.add(sdf.format(startDate));
 
                // 设置日期
                calendar.setTime(startDate);
 
                //把月数增加 1
                calendar.add(Calendar.MONTH, 1);
 
                // 获取增加后的日期
                startDate = calendar.getTime();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

 

 输入:"2022-07-01  00:00:00 "  "2022-10-27  23:59:59 "

返回结果:[2022-07,2022-08,2022-09,2022-10] 

三、输入开始时间和结束时间,返回时间范围内中的所有年份列表

 

/**
     * 获取两个日期之间的所有年
     *
     * @param startTime
     * @param endTime
     * @return:list
     */
    public static List<String> getYearBetweenDate(String startTime, String endTime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
        // 声明保存日期集合
        List<String> list = new ArrayList<>();
        try {
            // 转化成日期类型
            Date startDate = sdf.parse(startTime);
            Date endDate = sdf.parse(endTime);
 
            //用Calendar 进行日期比较判断
            Calendar calendar = Calendar.getInstance();
            while (startDate.getTime() <= endDate.getTime()) {
 
                // 把日期添加到集合
                list.add(sdf.format(startDate));
 
                // 设置日期
                calendar.setTime(startDate);
 
                //把年数增加 1
                calendar.add(Calendar.YEAR, 1);
 
                // 获取增加后的日期
                startDate = calendar.getTime();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

 输入:"2020-07-01  00:00:00 "  "2022-10-27  23:59:59 "

返回结果:[2020,2021,2022] 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java获取两个时间之间的所有日期、月份、年份,返回列表 的相关文章

随机推荐

  • 图解循环单链表(含C代码)

    目录 1什么是循环单链表 2好处是什么呢 3操作的差异 4代码 1什么是单向循环链表 单向循环链表对比单链表 其实只有一个地方的差异 那就是 尾结点的指针域不是指向空 而是指向了头结点 使其形成了一个环 2好处是什么呢 链表从链尾到链头很方
  • Windows内核面试题(持续更新,目前完成度30%约1.8万字)

    WINDOWS内核编程问题与答案 1 WDK和SDK的区别是什么 2 WDK全称叫做 3 如何创建WDK程序 4 WinDbg如何连接虚拟机 5 Windows内核符号表的作用 6 如何设置内核符号表与源文件 7 如何设置断点与源码调试 8
  • intel android haxm,使用Intel HAXM为Android模拟器加速,媲美真机

    Intel HAXM Hardware Accelerated Execution Manager 使用基于 Intel R Virtualization Technology VT 的硬件加速 因此需要 CPU 支持 VT 而且仅限于 I
  • 定位技术课程设计-微信小程序校园导游系统

    定位技术课程设计课程设计教学目的课程设计要求课程设计题目原题目拓展内容需求分析原理分析微信小程序API定位原理WIFI指纹定位原理路径规划算法调研详细设计总述主页面介绍学校简介页面介绍导引页面概述导引地图景点列表景点详细介绍页面搜索界面导航
  • 测试下几个网络相册

    1 百度相册外链分享 优点 国内站 速度快 可以批量上传 缺点 右下角会有水印 很是不爽 2 试下Photobucket 免费 无水印
  • 第一次CCF CSP认证体验

    今天是我第一次参加CCF CSP认证 虽然这已经是第十二次CCF认证了 感觉题目有点难欸 前面两道题暴力写完 然后看了第三题 哇 简直难写 第四题看了看 数据1e5条边 不会做 就写了一个暴力 希望能过点数据 第五题感觉像是一个动态规划 完
  • HTML(HBuilder)作业题10- 用户登录(jquery)

    问 简单的用户登录怎么弄 答 1 利用jquery 2 利用if 注释 用鼠标离开区域开始判断 可以自行尝试修改成click单击按钮 HBuilder
  • 【华为OD机试真题 Python】最多等和不相交连续子序

    前言 本专栏将持续更新互联网大厂机试真题 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于大厂机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun0
  • mmdetection常见报错以及解决方案汇总

    目录 1 MMCV 安装相关 1 MMCV 与 MMDetection 的兼容问题 ConvWS is already registered in conv layer AssertionError MMCV xxx is used but
  • MFC之AfxbeginThread 线程 创建、挂起、释放、结束、退出

    MFC之AfxbeginThread 线程 创建 挂起 释放 结束 退出 本文简单阐述了如何使用一个afxbeginthread创建一个线程 两种方法 使用默认设置 使用自主设置参数 以及一些如同 挂起 释放 边界锁等操作 h文件添加声明
  • 简单浅谈 电鱼机的脉宽、频率、占空比

    高频鱼机后级的脉宽 频率 占空比 以上三个参数很重要 它不仅是设计鱼机的主要参数 而且也是输出效果调整的最终目标 根据本人长时间玩高频机的一点点经验现向大家浅谈一下脉宽 频率 占空比与之高频鱼机的设计与最终输出效果的两者密切关系 首先说一下
  • 基于s5pv-210开发板 LCD驱动

    lcd硬件原理 利用液晶制成的显示器称为 LCD 依据驱动方式可分为静态驱动 简单矩阵驱动以及主动矩阵驱动 3 种 其中 简单矩阵型又可再细分扭转向列型 TN 和超扭转式向列型 STN 两种 而主动矩阵型则以薄膜式晶体管型 TFT 为主流
  • [深入研究4G/5G/6G专题-50]: URLLC-16-《3GPP URLLC相关协议、规范、技术原理深度解读》-10-高可靠性技术-1-低编码率编码调制方案MCS与高可靠性DRB

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文主页 目录 前言 第1章 什么是MCS 1 1 概念 1 2 MCS针对的对象
  • 转载RAW, YUV, RGB, JPEG之间关系

    RAW格式 从Sensor端最初获取的数字格式的数据 又称为Bayer格式 每个像素信息只有RGB中的某个颜色信息 且每4个像素中有2个像素为G信息 1个R信息 1个B信息 即GRBG格式 2M像素Camera以RAW10格式 每个像素10
  • url的讲解

    摘抄博客 什么是URL URL是什么意思 刘宇凡的专栏 CSDN博客 ur是什么意思 什么是URL URL是Uniform Resource Locator的缩写 即统一资源定位系统 也就是我们通常所说的网址 URL是在Internet的W
  • go get: installing executables with ‘go get‘ in module mode is deprecated.

    go get installing executables with go get in module mode is deprecated 问题描述 原因分析 解决方案 参考链接 问题描述 场景描述 执行go get github com
  • 关于CVE-2023-27161 Jellyfin流媒体系统存在SSRF漏洞的学习

    漏洞描述 Jellyfin 直到 v10 7 7 通过组件 Repository 包含服务器端请求伪造 SSRF 此漏洞允许攻击者通过构建的 POST 请求访问网络资源和敏感信息 环境及部署说明 实验环境 Centos 7 试验机器IP地址
  • 诚之和:Python机器学习之逻辑回归

    在机器学习领域中 逻辑回归是一个非常经典的算法 今天小编带来的是一片关于逻辑回归算法的介绍与实现 希望能给各位小伙伴带来一些帮助 一 题目 1 主题 逻辑回归 2 描述 假设你是某大学招生主管 你想根据两次考试的结果决定每个申请者的录取 机
  • 小程序使用mqtt时的问题

    由于业务需求 小程序项目中需使用mqtt 当我像Vue项目一样去使用时却出现了种种问题 归根结底还是因为没有去仔细看文档 因为英文文档实在懒得看 就那么顺其自然的写 结果浪费了一天时间 这里对小程序中使用mqttjs遇到的问题进行总结 mq
  • java获取两个时间之间的所有日期、月份、年份,返回列表

    需求描述 输入开始时间和结束时间 获取时间范围内的所有日期 月份 年份 输入可以为 yyyy MM dd HH mm ss 或者 yyyy MM dd 一 输入开始时间和结束时间 返回时间范围内中的所有日期列表 传入两个时间范围 返回这两个