JAVA-calendar.add(Calendar.Month,1):1月31号加一月是多少号?
2017-03-15 12:40
1021 查看
做一个统计费用的项目,需要在每一月取得相同的日期。用calendar.add(Calendar.Month,1)的方法。
问题就来了,假如第一个月有31天,第二个月不足31天,加上一月后是自动调整到第二个月的最后一天,还是顺延到下一个月?
网上说啥的都有。自己测了一下。
用的环境是JAVA SE-1.8。
结果
2017-01-31加一月:2017-02-28
2016-01-31加一月:2016-02-29
答案是自动调整为下月的最后一天。
——这也是大多数情况下更愿意接受的计算方法。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
那么按月累加的情况就要注意了,假如要取得某个月的31号,必须从有31号的月份获得,而不是每个循环添加1月。
问题就来了,假如第一个月有31天,第二个月不足31天,加上一月后是自动调整到第二个月的最后一天,还是顺延到下一个月?
网上说啥的都有。自己测了一下。
用的环境是JAVA SE-1.8。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try{ Date d = sdf.parse("2017-01-31"); Calendar cld = Calendar.getInstance(); cld.setTime(d); cld.add(Calendar.MONTH, 1); Date d2 = cld.getTime(); System.out.println(sdf.format(d)+"加一月:"+sdf.format(d2)); //闰年的情况 d = sdf.parse("2016-01-31"); cld = Calendar.getInstance(); cld.setTime(d); cld.add(Calendar.MONTH, 1); d2 = cld.getTime(); System.out.println(sdf.format(d)+"加一月:"+sdf.format(d2)); }catch(Exception e){ e.printStackTrace(); }
结果
2017-01-31加一月:2017-02-28
2016-01-31加一月:2016-02-29
答案是自动调整为下月的最后一天。
——这也是大多数情况下更愿意接受的计算方法。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
那么按月累加的情况就要注意了,假如要取得某个月的31号,必须从有31号的月份获得,而不是每个循环添加1月。
相关文章推荐
- java Calendar add方法
- java中用Calendar类判断某年中2月有多少天
- Java中Calendar类中month参数(月参数)的取值
- Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
- Java通过cal.get(Calendar.MONTH)比真实月份少了一个月
- JAVA:int month = n.get(Calendar.MONTH)+1;为何要加1?
- Java的Calendar.add(int field,int amount)
- Java.util.Calendar.add()方法实例
- java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期
- java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期
- java.lang.NoClassDefFoundError: org/apache/xerces/jaxp/datatype/XMLGregorianCalendarImpl$DaysInMonth
- JDK神坑:JAVA中Calendar的月份Month少1
- java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期
- Java基础知识强化95:Calendar类之Calendar类的add()和set()方法
- Java基础之Calendar应用:每周三、六休息,从某个日期起至今休息多少天?
- java Calendar roll 和add 方法的区别
- 遇到的问题----java中获取当前月份c.get(Calendar.MONTH)中月份少一个月
- java calendar 日期实现不断加一天
- nowDate.add(Calendar.DAY_OF_MONTH,1); 谁能告诉我这里面的 1 是什么意思
- Java Calendar.MONTH