JavaSE--日期类

发布时间 2023-08-15 21:48:33作者: 洛小依ovo

java.util.Date

一、构造方法new Date()

1、获取系统当前时间(精确到毫秒)

// 直接调用无参构造
Date nowTime = new Date();
// java.util.Date类的toString()方法已经被重写了
//System.out.println(nowTime); //Thu Mar 05 10:51:06 CST 2023

2、日期格式化

 将日期类型Date,按照指定的格式进行转换:Date --转换成具有一定格式的日期字符串-->String

SimpleDateFormat是java.text包下的。专门负责日期格式化的

yyyy或者yy 年(年是4位)
MM 月(月是2位)
dd 日
HH 时
mm 分
ss 秒
SSS 毫秒(毫秒3位,最高999。1000毫秒代表1秒)
注意:在日期格式中,除了y M d H m s S这些字符不能随便写之外,剩下的符号格式自己随意写

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
//SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
//SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
String nowTimeStr = sdf.format(nowTime);// 调用format方法来将时间转成该格式的字符串
System.out.println(nowTimeStr);

 3、将日期字符串转换成Date类型

String time = "2008-08-08 08:08:08 888";
//注意::SimpleDateFormat sdf2 = new SimpleDateFormat("格式不能随便写,要和日期字符串格式相同");
// 注意::字符串的日期格式和SimpleDateFormat对象指定的日期格式要一致。不然会出现异常:java.text.ParseException
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date dateTime = sdf2.parse(time);// 使用parse方法将字符串转为日期
System.out.println(dateTime); //Fri Aug 08 08:08:08 CST 2008

二、获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数

1、获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数

// 获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数。
long nowTimeMillis = System.currentTimeMillis();
System.out.println(nowTimeMillis);

2、统计一个方法的耗时

// 在调用目标方法之前记录一个毫秒数
long begin = System.currentTimeMillis();
printFun();
// 在执行完目标方法之后记录一个毫秒数
long end = System.currentTimeMillis();
System.out.println("耗费时长"+(end - begin)+"毫秒");


public static void printFun(){
    for(int i = 0; i < 100000; i++){
        System.out.println("i = " + i);
    }
}

3、new Date(int sss)参数传递一个毫秒

// 从1970-01-01 00:00:00 000 到 给定毫秒数的时间
// 1970-01-01 00:00:00 002
Date time = new Date(2); // 注意:参数是一个毫秒

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String strTime = sdf.format(time);
// 北京是东8区。差8个小时
System.out.println(strTime); // 1970-01-01 08:00:00 001
// 获取昨天的此时的时间
Date time2 = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
String strTime2 = sdf.format(time2);
System.out.println(strTime2);