一、Date类
① Date概述
- 类名:
java.util.Date
- 父类:
java.lang.Object
- 子类:
Date , Time , Timestamp
- 实现的接口:
Serializable , Cloneable , Comparable < Date >
- 从以下版本开始: JDK1.0
- Date表示特定的瞬间,精确到毫秒
② Date的构造方法
public Date()
无参构造方法
public Date(long date)
有惨构造方法
Date nowTime = new Date();
//输出系统当前时间,Date类重写了toString方法
System.out.println(nowTime);//Sat Jul 25 16:21:39 CST 2020
//time的时间为:在1970年1月1日 00:00:00 000 的基础上加上参数
//又因为北京和格林尼治标准时间差8小时,所以为以下结果
//将毫秒转为Date格式日期,这个日期起点是1970年1月1日 00:00:00 000
Date time = new Date(1);//长整形参数表示毫秒
System.out.println(time);//Thu Jan 01 08:00:00 CST 1970
③ Date的常用方法
//1595666464692,获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数,每过一秒加1000毫秒
Date nowTime = new Date();
System.out.println(nowTime.getTime());
System.out.println(System.currentTimeMillis());
System.out.println("获取当前年:"+(1900+nowTime.getYear()));//年份是1900年以后开始算的
System.out.println("获取当前月:"+(1+nowTime.getMonth()));//月份默认是0开始
System.out.println("获取当前日:"+nowTime.getDate());
System.out.println("获取当前时:"+nowTime.getHours());
System.out.println("获取当前分:"+nowTime.getMinutes());
System.out.println("获取当前秒:"+nowTime.getSeconds());
③ Date日期 格式化
格式 | 意义 | 例如 |
---|---|---|
YYYY/yyyy | 4位数年份 | 2020 |
yy | 2位数年份 | 20 |
MM | 月份 | 07 |
MMM | 汉语月份 | 七月 |
dd | 几号 | 25 |
hh | 12小时制 | 1~12 |
HH | 24小时制 | 00~23 |
mm | 分 | 0~59 |
ss | 秒 | 0~59 |
SS/SSS | 毫秒 | 000~999 |
【注意】:日期格式中间的分隔符可以自己选择(/、-、*、:、空格、汉字)
(1) 日期格式化要用到 java.text.SimpleDateFormat
这个类
-
构造方法
public SimpleDateFormat()
:系统默认格式的对象
public SimpleDateFormat(String pattern)
:自己设定格式的对象 -
常用普通方法
从父类java.text.DateFormat
继承过来的方法
public final String format(Date date)
Date–>Stringpublic Date parse(String source) throws ParseException
String–>Date
//Date-->String
//无参构造
SimpleDateFormat sdf = new SimpleDateFormat();//默认格式
String nowTimeStr = sdf.format(nowTime);
System.out.println(nowTimeStr);//20-7-25 下午8:28
//有参构造
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String nowTimeStr = sdf.format(nowTime);
System.out.println(nowTimeStr);//2020-07-25 20:34:35:716
//String-->Date
String time = "2020-08-08 08:08:08:888";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
Date dateTime = sdf2.parse(time);
System.out.println(dateTime);//Sat Aug 08 08:08:08 CST 2020
④总结一些System类的相关属性和方法
System.out
【out是System的类的静态变量】System.out.println()
【println()方法不是System类的,是PrintStream类的方法】System.gc()
【建议启动垃圾回收期】System.currentTimeMillis()
【获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数】System.exit(0)
【退出JVM】
统计一个方法所耗费的时长
public class DateTest02 {
public static void main(String[] args) {
/*
1.获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数
1秒 = 1000毫秒
*/
Date date = new Date();
System.out.println(date.getTime());
System.out.println(System.currentTimeMillis());
//统计一个方法所耗费的时长
//方法之前记录一个毫秒数
long begin = System.currentTimeMillis();
print();
//方法之后记录一个毫秒数
long end = System.currentTimeMillis();
//方法耗费时长为
System.out.println("耗费了"+(end - begin)+"毫秒");//耗费了34毫秒
}
//统计一个方法所耗费的时长
public static void print(){
for (int i = 0; i <1000 ; i++) {
//打印耗时间
System.out.println("i = " + i);
}
}
}
⑤获取昨天此刻的时间
Date yesterdayNowTime = new Date(System.currentTimeMillis()-1000*60*60*24);
String ydNT = sdf.format(yesterdayNowTime);
System.out.println(yesterdayNowTime);