前言:
我们在日常开发中离不开操作时间,所以这一篇主要是来讲解一下Java中操作时间的类。
Date
Date类表示的是特定的,瞬间的,他能精确毫秒。他是一个具体的类。java.util.Date。
Date date = new Date();
System.out.println(date.getTime());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = simpleDateFormat.format(date);
System.out.println(time);
输出结果为:
这里使用了SimpleDateFormat,是用来格式化date文本输出。
我们先来说一说输出结果,第一串输出是一串数字,在JDK1.1之前,类Date由两个其他的函数。它允许把如期解释为年、月、日、小时、分钟和秒值。它也允许格式化和分析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的相应方法已废弃。
Calender
Calender类替代了Date类中的某些方法。因为Date不利于国际化,所以一般使用Calendar。使用了Calendar不需要用到SimpleDateForMat;使用get()方法获取里面的值。具体例子:
// 使用默认时区和语言环境获得一个日历
Calendar cal = Calendar.getInstance();
// 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1
System.out.println("年:" + cal.get(Calendar.YEAR));
System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));
System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + cal.get(Calendar.MINUTE));
System.out.println("秒:" + cal.get(Calendar.SECOND));
//手动设置某个日期
Calendar cal02 = Calendar.getInstance();
//注意,设置时间的时候月份的下标是在0开始的
//设置时间不一定要这6个参数3个参数也是可以的
cal02.set(2018,9,1,12,0,0);//二零一八年十月一号十二点
Date和Calendar区别
Date是日期,Date是类,而Calendat是抽象类。抽象类不能被实例化。
具体效率问题,需要根据具体项目使用场景来判断。