Java.util.Date
Date() |
生成一个代表当前日期时间的Date对象。 |
Date(long date) |
根据指定的long整形数来生成一个Date对象,参数为时间差(相对于GMT1997 -1-1 00:00:00),单位为毫秒 |
boolean after(Date when) |
测试该日期是否在指定日期when之后 |
boolean before(Date when) |
测试该日期事都在指定日期when之前 |
long getTime() |
返回该时间对应的long型整数 |
Void setTime(long time) |
设置该Date对象的时间 |
java.util.Calendar |
抽象类,用于表示日历 |
Calendar.getInstance() |
获取一个Calendar对象 |
Void add(int field, int amount) |
给指定字段添加或减去指定时间 |
Int get(int field) |
返回指定字段的值 |
Int getActualMaximum(int field) |
返回指定日历字段可能拥有的最大值 |
Int getActualMinimum(int field) |
返回指定日历字段可能拥有的最小值 |
Void roll(int field ,int amount) |
同add(),但是加上amount后超过该字段能表示的最大值,不会向上一个字段进位 |
Void set(int year,int month,int date) |
设置calendar对象的年月日(月份的起始为0) |
Void set(int field ,int value) |
将给定的日历字段设置为给定值 |
public class CalendarTest {
public static void main(String[] args) {
//date
Date date = new Date();// 等价于 date=new Date(System.currentTimeMillis());
System.out.println(date);
//Calendar
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);//Date 类型 转换为 Calendar 类型
date = calendar.getTime();//calendar 类型转换为 Date类型
System.out.println(calendar.getTime());
System.out.println(calendar.get(YEAR));//输出年
calendar.set(2016, 7, 31, 23, 6, 20);//将时间设置为Wed Aug 31 23:06:20 CST 2016
System.out.println(calendar.getTime());
calendar.add(Calendar.MONTH, 1);//月份+1 因为月份+1之后就变成了9月,而九月是没有31号的,故下一级字段日,会修正到变化最小的值。
System.out.println(calendar.getTime()); //Fri Sep 30 23:06:20 CST 2016
calendar.add(Calendar.DATE, 1);//该字段相加后溢出,故会向上一字段进一
System.out.println(calendar.getTime());//Sat Oct 01 23:06:20 CST 2016
calendar.roll(Calendar.MONTH, 12);//roll相加后溢出不会进位
System.out.println(calendar.getTime());//Sat Oct 01 23:06:20 CST 2016
// 设置Calendar的容错性
calendar.set(Calendar.MONTH, 13); //结果是YEAR字段加1,MONTH字段为1(2月)
System.out.println(calendar.getTime());//Wed Feb 01 23:06:20 CST 2017
calendar.setLenient(false);
calendar.set(Calendar.MONTH, 13);//导致运行时异常 java.lang.IllegalArgumentException: MONTH
System.out.println(calendar.getTime()); //将此句注释掉则不会出现异常 ,这是因为set方法修改字段时会有延迟
//直到下次调用get getTime getTimeInMillis add 或roll 时才会重新计算日历的时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Time: "+ df.format(new Date()));//格式化输出时间
}
}