public static void main(String[] args) {

        String t1="2018-08-01";
t1 = t1.replaceAll("(\\d{4})\\-(\\d{2})\\-\\d{2}", "$1-$2-01");
//String t2="2024-11-30";
//String t2="2018-01-30";
//String t2="2019-09-30";
String t2 = "2019-09-31";
t2 = t2.replaceAll("(\\d{4})\\-(\\d{2})\\-\\d{2}", "$1-$2-01"); List<String> monthArea = getMonthArea(t1,t2); for(String t : monthArea) {
System.out.println(t);
} }
private static List<String> getMonthArea(String t1,String t2) { LocalDate startDate = LocalDate.parse(t1);
LocalDate endDate = LocalDate.parse(t2); List<String> monthArea = new ArrayList<>(); if (startDate.compareTo(endDate)>0) {
return monthArea;
} int startYear = startDate.getYear();
int startMonth = startDate.getMonthValue(); int endYear = endDate.getYear();
int endMonth = endDate.getMonthValue(); if (startYear==endYear) {
for(int i=startMonth;i<=endMonth;i++) {
monthArea.add(startYear+"-"+getMyMonth(i));
}
}else {
for(int i=startYear;i<=endYear;i++) {
if (i == startYear ) {
calcStartYear(monthArea,startYear,startMonth);
}else if (i == endYear){
calcEndYear(monthArea,endYear,endMonth);
}else {
calcOneYear(monthArea,i);
}
}
} return monthArea; }
private static void calcStartYear(List<String> monthArea,int startYear,int startMonth) {
for(int i=startMonth;i<=12;i++) {
monthArea.add(startYear+"-"+getMyMonth(i));
}
}
private static void calcOneYear(List<String> monthArea,int year) {
for(int i=1;i<=12;i++) {
monthArea.add(year+"-"+getMyMonth(i));
}
}
private static void calcEndYear(List<String> monthArea,int endYear,int endMonth) {
for(int i=1;i<=endMonth;i++) {
monthArea.add(endYear+"-"+getMyMonth(i));
}
}
private static String getMyMonth(int month){
String result = "";
if (month<10) {
result = "0" + Integer.toString(month);
}else {
result = Integer.toString(month);
}
return result;
}

Java获取2个日期里面的所有月份的更多相关文章

  1. Java获取当前的日期和时间

    Java获取当前的日期和时间 1.具体实现方法如下 /** * @Title:DateTime.java * @Package:com.you.model * @Description:获取当前的日期 ...

  2. java 获取两个日期之间的所有日期(年月日)

    前言:直接上代码 java 获取两个日期之间的所有日期(年月日) /** * 获取两个日期之间的日期,包括开始结束日期 * @param start 开始日期 * @param end 结束日期 * ...

  3. java获取两个日期之间的所有日期

    java获取两个日期之间的所有日期   解决方法: 1.核心方法 private List<String> getBetweenDates(String start, String end ...

  4. JS[获取两个日期中所有的月份]

    //------[获取两个日期中所有的月份中] function getMonthBetween(start,end){ var result = []; var s = start.split(&q ...

  5. Java 获取两个日期之间的日期

    1.前期需求,两个日期,我们叫他startDate和endDate,然后获取到两个日期之间的日期 /** * 获取两个日期之间的日期 * @param start 开始日期 * @param end ...

  6. java计算两个日期之间相隔的月份(向下取整)

    最近需求里面有个需要计算两个日期之间相隔的月份,写起来还挺繁琐,需要将各种情况都要考虑到,写了一个作为以后自己的工具吧. //获取哪一天 public static int getDay(Date d ...

  7. java获取字符串格式日期向前或向后n天的日期

    private void setTilteMessage(){          BaseDao dao = new BaseDao();          String titleData = da ...

  8. java 获取两个日期相差的毫秒数

    方法一可以使用date的getTime()方法来将当前日期格式的时间转换为毫秒数,进而相减. long systime = new Date().getTime();//当前系统时间        l ...

  9. Java获取两个日期之间的所有日期集合

    1.返回Date的list private List<Date> getBetweenDates(Date start, Date end) { List<Date> resu ...

随机推荐

  1. Qt生成CSV 文件

    1.CSV 文件 不支持 EXCEL中 的多个工作表的模式. 一个 CVS 文件只能转换成 EXCEL 一个工作表. 2.逗号分隔值(Comma-Separated Values,CSV,有时也称为字 ...

  2. ZOJ3175【公式化函数的思想】

    题意:  给出f(n,m)(m<n)的定义:大于m并且小于n的能整除m的数的个数. F(n)为m从1至n的f(n,m)的和. 给出n,求F(n). 思路: 就是计算n/1 +  n/2 + n/ ...

  3. Lightoj1080 【线段树】

    题意: 给你一个0/1的数组,然后给你n段区间,说这个区间里要反转一次,然后给你Q个询问,问你这个位置是什么: 思路: 我们线段树维护一下就好了额: 其实反转的话,还是算次数是不是,奇偶嘛: #inc ...

  4. 51nod1414【思维】

    思路: 直接可以枚举1-n,如果枚举到是n的约数i,那么暴力枚举起点,其余点用i累加就一定是正多边形.复杂度是(n*n的公约数个数(最多80)): const int N=2e4+10; int a[ ...

  5. C. Chessboard( Educational Codeforces Round 41 (Rated for Div. 2))

    //暴力 #include <iostream> #include <algorithm> #include <string> using namespace st ...

  6. Centos5.11 使用yum源

    由于我是用的系统是Centos 5.11以停止更新很多年,故此yum也不能用,找了很多方法,最终yum能稳定的运行在Centos5.11上,下面开始一一讲解步骤: 1:首先更新yum源 地址:http ...

  7. 新生代内存中为什么要有两个survivor区

    首先是关于新生代中的内存分布的描述: 新生代中的对象都是“朝生夕死”的对象,所以每次gc存活的对象很少,于是在新生代中采用的垃圾回收算法是“复制算法”. 将新生代的内存分为一块较大的Eden区域和两块 ...

  8. python学习之高级特性:

    切片:对列表.元组.字符串.字典取中间的一部分,在C中一般是通过for循环拷贝/memcpy/strcat等操作.而python提供了更方便的切片操作符[m:n]:前闭后开,如果从0取m可以省略:如果 ...

  9. C. Divide by Three DP

    http://codeforces.com/contest/792/problem/C 这题奇葩题我居然用dp过了. 如果要模拟的话,可以用一个栈保存,保存每一个%3 = 2的pos,%3 = 1的p ...

  10. Azkaban是什么?(一)

    不多说,直接上干货! http://www.cnblogs.com/zlslch/category/938837.html Azkaban是什么?  Azkaban是一套简单的任务调度服务,整体包括三 ...