java.util.Calendar由于是一个抽象类,所以我们不能对它进行实例化,如果想获得一个日历实例,可能要用到java.util.GregorianCalendar类。
实例化
java.util.GregorianCalendar是java.util.Calendar的一个实现类,当然除了java.util.GregorianCalendar还有其它实现类,这里不做讨论。
可以像下面这样获得一个日历实例:
- Calendar calendar1 = Calendar.getInstance();
- Calendar calendar2 = new GregorianCalendar();
获取日期和时间
Calendar类提供了一系列方法可以用来获取年、月、日、时、分、秒、毫秒、时区等,像下面这样:
- Calendar calendar = new GregorianCalendar();
- int year = calendar.get(Calendar.YEAR);
- int month = calendar.get(Calendar.MONTH); // 月份从0开始
- int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
- int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
- int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
- int weekOfMonth= calendar.get(Calendar.WEEK_OF_MONTH);
- int hour = calendar.get(Calendar.HOUR); // 12小时制
- int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY); // 24小时制
- int minute = calendar.get(Calendar.MINUTE);
- int second = calendar.get(Calendar.SECOND);
- int millisecond= calendar.get(Calendar.MILLISECOND);
设置日期和时间
calendar除了提供了get方法来获取日期或时间,也提供了许多set方法用来设置日历实例的日期或时间:
- Calendar calendar = new GregorianCalendar();
- calendar.set(Calendar.YEAR, 2013);
- calendar.set(Calendar.MONTH, 11);
- calendar.set(Calendar.DAY_OF_MONTH, 24);
关于日历的算术运算
使用Calendar的add()方法可以对日历实例进行计算,比如:
- Calendar calendar = new GregorianCalendar();
- //将日期设置为2013年最后一天
- calendar.set(Calendar.YEAR, 2013);
- calendar.set(Calendar.MONTH, 11); // 11表示12月份
- calendar.set(Calendar.DAY_OF_MONTH, 31); // 元旦前一天
- //增加一天
- calendar.add(Calendar.DAY_OF_MONTH, 1);
- //日期变为2014年的第一天
- int year = calendar.get(Calendar.YEAR); // 2014
- int month = calendar.get(Calendar.MONTH); // 一月份
- int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); // 一日
- calendar.add(Calendar.DAY_OF_MONTH, -1);
需要注意的地方
2、calendar类中使用1到7来表示周日到周六,1表示周日,7表示周六,比如calendar.get(Calendar.DAY_OF_WEEK)的值是3,那么表示周二。