两个类:

Date类:获取系统当前日期,属于java.util.Date包内

 

SimpleDateFormat类:将当前日期进行格式化处理,yyy-MM-dd HH:mm:ss SSS

 

代码演示:

Date转String

package com.lbj.javase.date;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) {
       //获取系统当前时间(精确到毫秒)
        Date nowTime = new Date();

        //直接调用无参数构造方法就行
        //java.util.Date已经被重写
        //输出的应该不是一个对象的内存地址,应该是一个日期字符串
        System.out.println(nowTime);//Tue Mar 16 12:30:21 CST 2021

        //日期可以格式化吗?
        //SimpleDateFormat是java.text包下的。专门负责日期格式化
        //将日期类型date,按照指定的格式进行转换:Date--》String
        //注意:在日期格式中,除了y M d H m s S 这些字符不能随便写之外,剩下的符号格式自己随意组织
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");

        String nowTimeStr=simpleDateFormat.format(nowTime);
        System.out.println(nowTimeStr);//2021-03-16 12:58:51 549

    }
}

 

代码演示:

Stirng转Date

package com.lbj.javase.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) throws ParseException {
        //假设现在有一个日期字符串String,怎么转换成Date类型
        //String转Date
        String s="2008-08-08 08:08:08 888";

        //注意:(括号里面的格式不能随便写,要和日期字符串保持相同)
//否则,会出现异常
        SimpleDateFormat s2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");

        Date date=s2.parse(s);

        System.out.println(date);//Fri Aug 08 08:08:08 CST 2008
    }
}

 

代码演示:

用end时间-begin时间,得出运行时总花费的时间(可以用来测试系统某段程序的运行时间优化)

package com.lbj.javase.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) throws ParseException {
        //获取自1970年1月1日 00:00:00 000 到当前系统时间的总毫秒数
        //1秒=1000毫秒
        Long nowTimeMills=System.currentTimeMillis();
        System.out.println(nowTimeMills);//1615873008226

        Long begin=System.currentTimeMillis();
        print();
        Long end=System.currentTimeMillis();
        System.out.println("print()方法运行总花费毫秒数为:"+(end-begin));//print()方法运行总花费毫秒数为:5
    }

    private static void print() {
        for (int i = 0; i <1000000000; i++) {
            //如果不用打印出来的话,计算机运行是非常快的,而且每次运行的时候由于虚拟机调度的问题,花费时间并不是不变的
            //System.out.println("i="+i);
        }
    }
}

 

 

简单总结一下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

 

 

代码演示:

通过毫秒构造Date对象

package com.lbj.javase.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) throws ParseException {
        //这个是时间是什么时间?
        //看帮助文档得知,此时的参数是一个毫秒
        //且帮助文档显示,当里面添加参数的时候,是从1970-01-01 00:00:00 00x 开始计算
        Date date=new Date(1);

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String s=sdf.format(date);

        //由于本地电脑定位的时区是东八区,因此按照SUN公司的格林威治时间来算
        System.out.println(s);//1970-01-01 08:00:00 001

        


    }
}

 

代码演示:

获取昨天的此时时间

package com.lbj.javase.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

 class DateTest01 {
    public static void main(String[] args) throws ParseException {
        //这个是时间是什么时间?
        //看帮助文档得知,此时的参数是一个毫秒
        //且帮助文档显示,当里面添加参数的时候,是从1970-01-01 00:00:00 00x 开始计算
        Date date=new Date(1);

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String s=sdf.format(date);

        //由于本地电脑定位的时区是东八区,因此按照SUN公司的格林威治时间来算
        System.out.println(s);//1970-01-01 08:00:00 001

//获取此时昨天的时间
        Date date1=new Date(System.currentTimeMillis()-1000*60*60*24);
        String s1=sdf.format(date1);
        System.out.println(s1);//2021-03-15 14:05:29 607


    }
}