Java中的日期、时间类

时间:2023-01-13 22:04:57

Java.util.Date

Date()

生成一个代表当前日期时间的Date对象。

Date(long date)

根据指定的long整形数来生成一个Date对象,参数为时间差(相对于GMT1997 -1-1 000000),单位为毫秒

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()));//格式化输出时间

}
}