Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
创建一个代表系统当前日期的Calendar对象
Calendar dt = Calendar.getInstance();//默认是当前日期
创建一个指定日期的Calendar对象
使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。
//创建一个代表2009年6月12日的Calendar对象
Calendar dt = Calendar.getInstance();
//Set设置Calendar类对象信息
dt.set(2020, 1, 13);
//Add设置Calendar类对象信息
c1.add(Calendar.DATE, 10);
Calendar类对象字段类型
Calendar类中用以下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
Calendar类对象信息的获得
Calendar dt = Calendar.getInstance();
// 获得年份
int year = dt.get(Calendar.YEAR);
// 获得月份
int month = dt.get(Calendar.MONTH) + 1;
// 获得日期
int date = dt.get(Calendar.DATE);
// 获得小时
int hour = dt.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = dt.get(Calendar.MINUTE);
// 获得秒
int second = dt.get(Calendar.SECOND);
// 获得星期几
int day = dt.get(Calendar.DAY_OF_WEEK);
注:(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推
实例:
import java.util.*;
public class Test{
public static void main(String args[]) {
long start = System.currentTimeMillis( );
try {
for(int i = 0; i < 5; ++i){
// 创建一个代表系统当前日期的Calendar对象
Calendar dt = Calendar.getInstance();//默认是当前日期
System.out.println(dt.get(Calendar.SECOND));
Thread.sleep(1000 * 5); // 休眠5秒
}
}catch (Exception e) {
System.out.println("Got an exception!");
}
long end = System.currentTimeMillis( );
long speedTime = (end - start)/1000;
System.out.println("Run the program, take the time: " + speedTime + " s");
}
}
结果展示:
29
34
39
44
49
Run the program, take the time: 25 s