calendar类(calendar类是一个抽象类,不可以被实例化)
JAVA中Calendar类getActualMaximum()方法的使用是什么?
你查一下API Calendar的getActualMaximum(int field)他传入的是一个int类型,这个方法的具体意思就是说根据你传入的参数代表的意思(年、月、周等)查询当前(年、月、周)拥有的最大值。
如果是年就查询这一年中的天数,如果月份就查询当前月中的天数,如果是周就查询当前周的天数
这个int类型在Calendar中是一个常量定义的,他们分别是
public static final int ERA = 0;
public static final int YEAR = 1;
public static final int MONTH = 2;
public static final int WEEK_OF_YEAR = 3;
public static final int WEEK_OF_MONTH = 4;
public static final int DATE = 5;
public static final int DAY_OF_MONTH = 5;
public static final int DAY_OF_YEAR = 6;
public static final int DAY_OF_WEEK = 7;
你可以看到5就是DATE,所以给方法传入Calendar.DATE和5的时候返回的值是一样的。
set(Calendar.DATE,1)这种写法是什么意思,是改变DATE的值么?
这个并不是说改变DATE本身的值,他是final类型的 你说可以改变么?
这个意思是说把日历日期设置为当前月的第一天,如果你的日历日期是2013-07-11的话 那么当你set(Calendar.DATE,1)之后日历日期就变成了2013-07-01,顺便跟你说一声日历日期也就是你c.set()这个方法设置的;一般是传一个Date对象进去。

Java中日历类(CalendarClass)的用途?
Java中日历类(Calendar类)的用途如下:
Calendar类的静态方法getInstance()可以初始化一个日历对象:Calendar now = ????????Calendar.getInstance(); ? ?
可以使用下面三个方法把日历定到任何一个时间:
?????set(int?year?,int?month,int?date)??;
?????set(int?year?,int?month,int?date,int?hour,int?minute)?;
?????set(int?year?,int?month,int?date,int?hour,int?minute,int?second)?;
如果想获得年份、月份、小时等信息可以使用: ?
??????Now.get(Calendar.Month);//这样的方法?0表示一月,1表示二月??
?????get(Calendar.DAY_OF_MONTH);//获得这个月的第几天
?????get(Calendar.DAY_OF_WEEK);//获得这个星期的第几天?
?????get(Calendar.DAY_OF_YEAR);//获得这个年的第几天??
???????getTimeMillis();//获得当前时间的毫秒表示
1.计算某一月份的最大天数
????Calendar?time=Calendar.getInstance();?
????time.clear();?
????time.set(Calendar.YEAR,year);?
????time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0?????????????
????int?day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
????注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
????2.Calendar和Date的转化
????(1) Calendar转化为Date
????Calendar?cal=Calendar.getInstance();
????Date?date=cal.getTime();
????(2) Date转化为Calendar
????Date?date=new?Date();
????Calendar?cal=Calendar.getInstance();
????cal.setTime(date);
????3.格式化输出日期时间
????Date?date=new?Date();
????SimpleDateFormat?df=new?SimpleDateFormat("yyyy-MM-dd?hh:mm:ss");
????System.out.println(df.format(date));
4.计算相隔天数的方法
????public?int?getDaysBetween?(Calendar?d1,?Calendar?d2){
??????if?(d1.after(d2)){??//?swap?dates?so?that?d1?is?start?and?d2?is?end
???????????java.util.Calendar?swap?=?d1;
???????????d1?=?d2;
???????????d2?=?swap;
??????}
??????int?days?=?d2.get(Calendar.DAY_OF_YEAR)?-?d1.get(Calendar.DAY_OF_YEAR);
??????int?y2?=?d2.get(Calendar.YEAR);
?????if?(d1.get(Calendar.YEAR)?!=?y2){
???????????d1?=?(Calendar)?d1.clone();
???????????do{
?????????????days?+=?d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
???????????????d1.add(Calendar.YEAR,?1);
??????????}?while?(d1.get(Calendar.YEAR)?!=?y2);
??????}
???????return?days;
????}
Calendar类如何创建对象 为什么?
一般是这样给Calendar类创建对象的:
Calendar
cal
=
Calendar.getInstance();
这是因为Calendar类的构造函数是protected,不能直接调用
而Calendar类中的getInstance方法却是静态的,可以通过类名直接引用
用上面方法创建出来的Calendar是包含了默认的语言和时区的,想要给calendar赋值可以这样:
Data
date
=
new
Date();
cal.setTime(date);
java中GregorianCalendar类与Calendar类的关系与区别?
类 Calendar
java.lang.Object
java.util.Calendar
所有已实现的接口:
Serializable, Cloneable, ComparableCalendar
直接已知子类:
GregorianCalendar
--------------------------------------------------------------------------------
public abstract class Calendarextends Objectimplements Serializable, Cloneable, ComparableCalendarCalendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
该类还为实现包范围外的具体日历系统提供了其他字段和方法。这些字段和方法被定义为 protected。
与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();
Calendar 对象能够生成为特定语言和日历风格实现日期-时间格式化所需的所有日历字段值,例如,日语-格里高里历,日语-传统日历。Calendar 定义了某些日历字段返回值的范围,以及这些值的含义。例如,对于所有日历,日历系统第一个月的值是 MONTH == JANUARY。其他值是由具体子类(例如 ERA)定义的。有关此内容的细节,请参阅每个字段的文档和子类文档。
我建议你下个jdk的帮助文档哦。这样的问题你以后要学着去查帮助文档解决。