首页 > 编程语言 >java基于joda-date实现获取两个时间段对应类型的所有时间,比如说两年之间的所有日期,两年之间的所有月份

java基于joda-date实现获取两个时间段对应类型的所有时间,比如说两年之间的所有日期,两年之间的所有月份

时间:2023-05-22 18:55:04浏览次数:39  
标签:joda java format PATTERN 所有 beginDateTime beginTime timesList endTime

/**
     * 获取两个时间段对应类型的所有时间
     *
     * @param type      日期类型,包含day、month、year
     * @param beginTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    public static List<String> getBetweenTime(String type, String beginTime, String endTime) {

        if (type == null || beginTime == null || endTime == null) {
            return null;
        }
        List<String> timesList = Lists.newArrayList();
        DateTimeFormatter format;
        DateTime beginDateTime;
        DateTime endDateTime;
        //计算两个天数直接所有天数
        if (TYPE_DAY.equals(type)) {
            //格式化时间,避免计算误差
            format = DateTimeFormat.forPattern(PATTERN_DATE);
            beginDateTime = format.parseDateTime(beginTime);
            endDateTime = format.parseDateTime(endTime);
            //计算两个时间相差多少天
            int days = Days.daysBetween(beginDateTime, endDateTime).getDays();
            timesList.add(beginDateTime.toString(PATTERN_DATE));
            for (int i = 1; i < days + 1; i++) {
                timesList.add(beginDateTime.plusDays(i).toString(PATTERN_DATE));
            }
        }
        //计算两个月份直接所有月份
        else if (TYPE_MONTH.equals(type)) {
            //格式化时间,避免计算误差
            beginTime = beginTime.substring(0, 7);
            endTime = endTime.substring(0, 7);
            format = DateTimeFormat.forPattern(PATTERN_MONTH);
            beginDateTime = format.parseDateTime(beginTime);
            endDateTime = format.parseDateTime(endTime);
            //计算两个时间相差多少月
            int months = Months.monthsBetween(beginDateTime, endDateTime).getMonths();
            timesList.add(beginDateTime.toString(PATTERN_MONTH));
            for (int i = 1; i < months + 1; i++) {
                timesList.add(beginDateTime.plusMonths(i).toString(PATTERN_MONTH));
            }
        }
        //计算两个年份直接所有年份
        else if (TYPE_YEAR.equals(type)) {
            //格式化时间,避免计算误差
            beginTime = beginTime.substring(0, 4);
            endTime = endTime.substring(0, 4);
            format = DateTimeFormat.forPattern(PATTERN_YEAR);
            beginDateTime = format.parseDateTime(beginTime);
            endDateTime = format.parseDateTime(endTime);
            //计算两个时间相差多少年
            int years = Years.yearsBetween(beginDateTime, endDateTime).getYears();
            timesList.add(beginDateTime.toString(PATTERN_YEAR));
            for (int i = 1; i < years + 1; i++) {
                timesList.add(beginDateTime.plusYears(i).toString(PATTERN_YEAR));
            }
        }
        return timesList;
}

这个方法主要是传入开始时间和结束时间,然后根据类型,返回包含的所有日期。比如说 2021-2023 返回的就是 2021、2022、2023 ,2021-11~2022-01 返回的就是2021-11、2021-12、2022-01

因为工作中刚好需要用到,发现网上又没有就记录下,如有问题请反馈,随时调整。

标签:joda,java,format,PATTERN,所有,beginDateTime,beginTime,timesList,endTime
From: https://www.cnblogs.com/asusdell/p/17421458.html

相关文章

  • JavaWeb
    htmlcssjavascriptjQueryxmldomjdomdom4jsaxpullServlet处理前端发送过来的请求Servlet容器,处理servlet的运行和管理它的生命周期以及共享数据jsp跳转servlet需要注意的一些问题jsp中的action和servlet中的注解@WebServlet("/firstServlet")应保持一致......
  • javax.validation.constraints 参数校验
    很痛苦遇到大量的参数进行校验,在业务中还要抛出异常或者不断的返回异常时的校验信息,在代码中相当冗长,充满了if-else这种校验代码,今天我们就来学习spring的javax.validation注解式参数校验. 为什么要用validatorjavax.validation的一系列注解可以帮我们完成参数校验......
  • 记录--九个超级好用的 Javascript 技巧
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言在实际的开发工作过程中,积累了一些常见又超级好用的Javascript技巧和代码片段,包括整理的其他大神的JS使用技巧,今天筛选了9个,以供大家参考。1、动态加载JS文件在一些特殊的场景下,特别是一些库和框架......
  • java前后端分离有详细内容吗?
    微服务架构java前后端分离都有哪些具体内容?目前,有不少客户朋友经常询问我们类似的问题。其实,在新的经济发展形势下,提质增效的低代码开发平台微服务架构早已成为不少新老客户的选择,它们不仅能提高办公协作效率,而且还能助力企业实现办公自动化快速发展。1、java前后端分离到底有啥......
  • javascript基础2
    script标签里一旦使用src加载外部js文件后,这个script标签就不能写js语句了警告框!通知用户出错了。alert("哈哈!")输入框-输入内容prompt得到输入内容永远都是字符串varn1=prompt("第一个数")varn2=prompt("第二个数")问询框-confirm("呵呵")使用弹出框来显示结果......
  • JavaScript中实现文件上传下载的三种解决方案(推荐)
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • java 基础
    1、hashMap原理是一个keyvalue的存储结构。把key经过hash算法行程一个索引,在理想的过程中,行程的key是惟一的,但是不理想的状况,就会出现相同的索引,也就是hash碰撞。解决hash冲突JDK1.7的时候,用链表+数组 JDK1.8引入了红黑树当链表的长度大于等于8,会先判断数组如果大于64会......
  • day103- javaweb-cookie,session
    cookie,session1.会话session用户打开浏览器,点击链接,访问web资源,关闭浏览器,称为一次会话2.保存会话的技术cookie:客户端技术,相应请求session:服务器技术,将信息和数据放在session中 session与cookie的区别:cookie是吧用户的数据写给用户的浏览器,浏览器保存,可以保存多个s......
  • Java调用采集拼多多根据ID获取商品详情API接口返回值说明示例,获取电商平台商品详情数
    ​     拼多多是一家基于C2B拼团营销方式主营团购的电商平台,其盈利模式由利润源、利润点、利润杠杆、利润通道和利润屏障五个要素组成的。通过锁定目标客户、关注客户价值、举办相关活动、不断拓展收入来源等经营策略,拼多多在较短的时间内得以快速成长。然而这种模式也......
  • 如何通过Java代码将 PDF文档转为 HTML格式
    虽然PDF文件适合用于打印和发布,但不适合所有类型的文档。例如,包含复杂图表和图形的文档可能无法在PDF中呈现得很好。但是HTML文件可以在任何可运行浏览器的计算机上进行阅读并显示。并且HTML还具有占用服务器资源较小,便于搜索引擎收录的特点。那么今天这篇文章就将展示如何通过Ja......