Calendar中的方法的使用

用calendar.add(Calendar.Month,1)的方法,获取下一月相同的日期java

若是第一个月有31天,第二个月不足31天,加上一月后是自动调整到第二个月的最后一天,仍是顺延到下一个月?spa

用的环境是JAVA SE-1.8。code

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();
}

输出结果:orm

2017-01-31加一月:2017-02-28
2016-01-31加一月:2016-02-29
get

答案是自动调整为下月的最后一天。it

那么按月累加的状况就要注意了,假如要取得某个月的31号,必须从有31号的月份得到,而不是每一个循环添加1月。io

 

get,add,set方法ast

package cn.itcast_02;
 
import java.util.Calendar;
 
/*
 * public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操做。(根据日历字段,增长或减去)
 * public final void set(int year,int month,int date):设置当前日历的年月日。(直接设置日历值);
 */
public class CalendarDemo {
	public static void main(String[] args) {
		// 获取当前的日历时间
		Calendar c = Calendar.getInstance();
 
		// 获取月
		int year = c.get(Calendar.YEAR);
		// 获取月
		int month = c.get(Calendar.MONTH);
		// 获取日
		int date = c.get(Calendar.DATE);
		System.out.println(year + "年" + (month + 1) + "月" + date + "日");
 
		// // 三年前的今天
		// c.add(Calendar.YEAR, -3);
		// // 获取月
		// year = c.get(Calendar.YEAR);
		// // 获取月
		// month = c.get(Calendar.MONTH);
		// // 获取日
		// date = c.get(Calendar.DATE);
		// System.out.println(year + "年" + (month + 1) + "月" + date + "日");
 
		// 5年后的10天前
		c.add(Calendar.YEAR, 5);
		c.add(Calendar.DATE, -10);
		// 获取月
		year = c.get(Calendar.YEAR);
		// 获取月
		month = c.get(Calendar.MONTH);
		// 获取日
		date = c.get(Calendar.DATE);
		System.out.println(year + "年" + (month + 1) + "月" + date + "日");// 2021年11月30日
		System.out.println("-----------");
 
		c.set(2011, 11, 11);
		// 获取月
		year = c.get(Calendar.YEAR);
		// 获取月
		month = c.get(Calendar.MONTH);
		// 获取日
		date = c.get(Calendar.DATE);
		System.out.println(year + "年" + (month + 1) + "月" + date + "日");
	}
}
相关文章
相关标签/搜索