/** * 获取两个时间段对应类型的所有时间 * * @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