日期相关的类
- Date类
* 所属的包:通常使用的是java.util包,需要import导入;
* 没有继承的父类,默认继承Object类;
* 有无参构造也有有参构造方法,可以创建对象;
* 常用的方法
getTime(),和currentTimeMills()一样,都是返回从1970年1月1日0点0分0秒到现在的毫秒数,返回值是long类型;
Date date = new Date();
System.out.println(date.getTime());//1560419215639
System.out.println(System.currentTimeMillis()); //1560419215639
setTime(参数列表) 可以设置里面的参数可以写年,月,日;
before(参数),参数是Date类型的对象,比较对象的日期是否在参数日期的前面,若是则返回true;若不是,则返回false;
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
try {
Date date1 = format.parse("1997-11-06 00:00:00");
System.out.println(date.before(date1));//false
after(参数),参数是Date类型的对象,比较的是左边的日期是否在参数日期的后面,若是,则返回true;若不是,则返回false;
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
try {
Date date1 = format.parse("1997-11-06 00:00:00");
System.out.println(date.after(date1));//true
} catch (ParseException e) {
e.printStackTrace();
}
compareTo(参数),参数的Date的对象,比较的是左边的日期是否在参数日期的前边,若是,则返回1;若相等,则返回0;若前面日期在后面日期的后面,则返回-1;返回值是int型;
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
try {
Date date1 = format.parse("1997-11-06 00:00:00");
System.out.println(date.compareTo(date1));//1
} catch (ParseException e) {
e.printStackTrace();
}
toInstant(),显示当前年月日,时分秒和时区
Date date = new Date();
System.out.println(date.toInstant());//2019-06-13T09:50:51.304Z
- DateFormat类
* 所属的包:java.text包,需要import导入;
* 继承Format类;
* 此类事抽象类,不能创建对象,需要其子类创建对象;
* SimpleDateFormat是DateFormat的子类;
* 调用带String参数的构造方法创建对象;
可以格式化时间的模式:
Date d1 = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = df.format(d1);
System.out.println(s);//2019-04-16 17:05:00
-----------------------------------------------------------------------------------------
//以下代码可以得到指定时间的Date对象
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
try {
Date date = format.parse("2012-10-12 12:34:56");
String s = format.format(date);
System.out.println(s);//2012-10-12 12:34:56
} catch (ParseException e) {
e.printStackTrace();
}
以下代码可以计算你从出生到现在总共有多少天:
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
long bore = 0;
try {
Date date = format.parse("1997-11-06 00:00:00");
bore = date.getTime();
System.out.println(date.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println((System.currentTimeMillis() - bore)/1000/3600/24);
-----------------------------------
3. Calendar类
* 所属的包:java.util包,需要import导包;
* 没有继承的父类,默认继承Object类;
* 此类的构造方法是用protected修饰的,一般访问不到;
* 此类是一个抽象类,不能创建对象,需要用子类来创建对象;
* 常用方法:
after() before() ---->boolean型
setTime()
getTime()----->返回当前日期
getTimeInMillis()------>返回从1970年1月1日0是0分0秒到现在的毫秒值,返回值是long类型;
getTimeZone()------>返回当前时区;
Calendar c1 = Calendar.getInstance();
c.set(Calendar.YEAR,2015);
int year = c.get(Calendar.YEAR);
System.out.println(year);
//Calendar里面有一个date属性
//set(参数)可以操作date某一个局部信息,比如:年,月,日;
//get(参数)可以返回date某一个局部信息;
--------------
4. TimeZone类
* 所属的包:java.util,需要import导入包;
* 没有继承的类,默认继承Object类;
* 此类事抽象类,不能创建对象,可以用其子类创建对象;
* 可以通过以下两种方式获得此类对象:
//第一种
Calendar c = Calendar.getInstance();
TimeZone tz = c.getTimeZone();
//第二种
TimeZone tz = TimeZone.getDefault();
* 常用方法:
tz.getID()----->Asia/Shanghai //返回一个String类型的时区;
tz.getDisplayName()------>中国标准时间 //返回一个标准时间