Java基础知识之Date

 知识点1:怎么获取系统当前时间
 知识点2:String ---> Date
  知识点3:Date ---> String

// 获取系统当前时间(精确到毫秒的系统当前时间)
        // 直接调用无参数构造方法就行。
        Date nowTime = new Date();

        // java.util.Date类的toString()方法已经被重写了。
        // 输出的应该不是一个对象的内存地址,应该是一个日期字符串。
        //System.out.println(nowTime); //Thu Mar 05 10:51:06 CST 2020

        // 日期可以格式化吗?
        // 将日期类型Date,按照指定的格式进行转换:Date --转换成具有一定格式的日期字符串-->String
        // SimpleDateFormat是java.text包下的。专门负责日期格式化的。
        /*
        yyyy 年(年是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);
        System.out.println(nowTimeStr);


        // 假设现在有一个日期字符串String,怎么转换成Date类型?
        // String --> 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");
        try {

               dateTime = sdf2.parse(Time);

       } catch (ParseException e) {

               e.printStackTrace(); }

        //此处需要抛出异常 可以用try catch 也可以在当前方法前throws Exception异常
        System.out.println(dateTime); //Fri Aug 08 08:08:08 CST 2008

 

知识点四:获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数。
                 1秒 = 1000毫秒

                 System.currentTimeMillis()

简单总结一下System类的相关属性和方法:
    System.out 【out是System类的静态变量。】
    System.out.println() 【println()方法不是System类的,是PrintStream类的方法。】
    System.gc() 建议启动垃圾回收器
    System.currentTimeMillis() 获取自1970年1月1日到系统当前时间的总毫秒数。
    System.exit(0) 退出JVM。

该方法案例 统计一个自定义方法执行所耗费的时长:

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

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

    // 需求:统计一个方法执行所耗费的时长
    public static void print(){
        for(int i = 0; i < 1000000000; i++){
            System.out.println("i = " + i);
        }
    }

 

 知识点五: // 这个时间是什么时间?

        Date带参构造函数
        // 1970-01-01 00:00:00 001
        Date time = new Date(1); // 注意:参数是一个毫秒

        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
        
       System.out.println(new SimpleDateFormat("yyyy-MM-dd HH-mm-ss SSS").format(time));//以上代码可以用当前一段代码输出

        // 获取昨天的此时的时间。
        Date time2 = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
        String strTime2 = sdf.format(time2);
        System.out.println(strTime2);