使用java.util.Calendar来操作日期:
Calendar是一个抽象的类。所以无法取得Calendar的实例,但是可以取得它的具体子类的实例。
取得继承过的Calendar对象
调用Calendar的静态method,getInstance()会返回给你具体子类的实例:
Calendar cal = Calendar.getInstance();
运用Calendar对象
- 字段会保存状态:Calendar对象使用许多字段来表示某些事物的最终状态,也就是日期和时间。
- 日期和时间可以运算:Calendar方法可以让你对不同的字段作加法或减法的运算。
- 日期与时间可以用milisecond来表示:Calendar可以让你将日期转换成微秒的表示法,或将微秒转换成日期。
范例:
Calendar c = Calendar.getInstance();
//将时间设为2021年4月17日15:40
c.set(2021, 4, 17, 15, 40);
//将目前时间转换为以millisecond表示
long day1 = c.getTimeInMillis();
day1 += 1000*60*60;
//将c的时间加上一个小时
c.setTimeInMillis(day1);
System.out.println("new hour " + c.get(c.HOUR_OF_DAY));
//加上了35天,所以出已经到了5月
c.add(c.DATE, 35);
System.out.println("add 35 days " + c.getTime());
//滚动35天,注意只有日期字段会动
c.roll(c.DATE, 35);
System.out.println("roll 35 days " + c.getTime());
//直接设定DATE的值
c.set(c.DATE, 1);
System.out.println("set to 1 " + c.getTime());
重要方法:
add(int field, int amount)减时间值
get(int field)取出指定字段的值
getInstance()返回Calendar,可指定地区
getTimeInMillis() 以毫秒返回时间
roll(int field boolean up)加减时间值,不进位
set(int field, int value)设定指定字段的值
set(year, month, day, hour, minute)设定完整的时间
setTimeInMillis(long millis) 以毫秒指定时间
关键字段
DATE/DAY_OF_MONTH 每月的几号
HOUR/HOUR_OF_DAY 小时
MILLISECOND 毫秒
MINUTE 分钟
MONTH 月份
YEAR 年份
ZONE_OFFSET 时区位移