Java如何获取两个日期之间的月份和年份列表
1、获取年份列表示例如下

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; public class Main { public static void main(String[] args) { String date1 = "2017-01-01"; String date2 = "2021-12-01"; DateFormat formater = new SimpleDateFormat("yyyy"); Calendar beginCalendar = Calendar.getInstance(); Calendar finishCalendar = Calendar.getInstance(); try { beginCalendar.setTime(formater.parse(date1)); finishCalendar.setTime(formater.parse(date2)); } catch (ParseException e) { e.printStackTrace(); } while (beginCalendar.before(finishCalendar) || beginCalendar.equals(finishCalendar)) { String date = formater.format(beginCalendar.getTime()).toUpperCase(); System.out.println(date); beginCalendar.add(Calendar.YEAR, 1); } } }
2、获取月份列表示例如下

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; public class MainYearMonth { public static void main(String[] args) { String date1 = "2017-01-01"; String date2 = "2021-12-01"; //注意:这里的MM一定是大写,小写计算出的月份列表是错误的 DateFormat formater = new SimpleDateFormat("yyyy-MM"); Calendar beginCalendar = Calendar.getInstance(); Calendar finishCalendar = Calendar.getInstance(); try { beginCalendar.setTime(formater.parse(date1)); finishCalendar.setTime(formater.parse(date2)); } catch (ParseException e) { e.printStackTrace(); } while (beginCalendar.before(finishCalendar) || beginCalendar.equals(finishCalendar)) { String date = formater.format(beginCalendar.getTime()).toUpperCase(); System.out.println(date); beginCalendar.add(Calendar.MONTH, 1); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?