java.util.Calendar
1.概述
Calendar类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段
之间的转换提供了一些方法,并为操作日历字段提供了一些方法。瞬间可用毫秒值来表示,它是距格林威治标准时间
1970年1月1日的00:00:00.000格里高利历的偏移量。
2.获取日历对象
Calendar类是一个抽象类,它提供了一个获得Calendar类型一个通用对象的类方法:Calendar getInstance()
Calendar的getInstance方法返回一个 Calendar对象,其日历字段已由当前日期和时间初始化。
思考一个问题:此处的getInstance方法是怎样建了一个抽象类Calendar对象?
多态,之前遇到很多次,大抵上是这样的思想:多态
abstract class SuperClass{
public static SuperClass getInstance()
{
return new SubClass();
}
}
class SubClass extends SuperClass
{
}
3.成员变量
都是静态int型变量,年月日时分秒分为:YEAR/MONTH/DATE
通过Calendar类的int get(int field)得到各字段的值,如now.get(Calendar.YEAR)
4.成员方法
上面已经提到两个:
Calendar getInstance()和int get(int field)
再有:
abstract void add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
void set(int year, int month, int date)
设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
package API_ordinary;
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//获取Calendar对象,实际是子类对象
Calendar now=Calendar.getInstance();
//获取年月日等静态字段
System.out.println(now.get(Calendar.YEAR));
//MONTH从0开始,现在是10月份,MONTH为9
System.out.println(now.get(Calendar.MONTH));
//DATE:一月中的某天,等于DAY_OF_MONTH
System.out.println(now.get(Calendar.DATE));
System.out.println(now.get(Calendar.DAY_OF_MONTH));
//DAY_OF_WEEK:一星期中的某天,从星期日算起,星期三是第4天
System.out.println(now.get(Calendar.DAY_OF_WEEK));
//DAY_OF_YEAR:当前年中的天数
System.out.println(now.get(Calendar.DAY_OF_YEAR));
//DAY_OF_WEEK_IN_MONTH:当前月中的第几个星期
System.out.println(now.get(Calendar.DAY_OF_WEEK_IN_MONTH));
//HOUR:上午或下午的小时
System.out.println(now.get(Calendar.HOUR));
//MINUTE:一小时中的分钟
System.out.println(now.get(Calendar.MINUTE));
//SECOND:一分钟的秒
System.out.println(now.get(Calendar.SECOND));
//修改日历字段:五年前
now.add(Calendar.YEAR, -5);
//设置日历字段
now.set(2010,9,11);
}
}
2016
9
12
12
4
286
2
6
59
4