java基于joda-date实现获取两个时间段对应类型的所有时间,比如说两年之间的所有日期,两年之间的所有月份
/** * 获取两个时间段对应类型的所有时间 * * @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
因为工作中刚好需要用到,发现网上又没有就记录下,如有问题请反馈,随时调整。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏