Java学习
Date类毫秒值的概念与作用构造方法无参构造有参构造 成员方法getTime()currentTimeMillis方法 DateFormat和SimpleDateFormat类构造方法成员方法使用这两个成员方法及其细节练习 Calendar日历类常用成员方法getsetaddgeiTime
Date类
java.util.Date:表示日期和时间的类,Date 表示特定的瞬间,精确到毫秒。
毫秒值的概念与作用
毫秒:千分之一秒,1000毫秒=1。
 秒特定的瞬间:一个时间点,一刹那时间
 例如:
 2088-08-08 09:55:33:333瞬间
 2088-08-0809:55:33:334瞬间
 2088-08-08 09:55:33:335瞬间
 …
毫秒值的作用:可以对时间和日期进行计算。
 2022-01-01到2088-01-01中间一共有多少天?
 可以日期转换为毫秒进行计算,计算完毕,在把毫秒转换为日期。
把日期转换为毫秒:
 当前的日期:2022-08-28
 时间原点(0毫秒):1970年1月1日00:00:00(英国格林威治)
 就是计算当前日期到时间原点之间一共经历了多少毫秒(374267540068L)
 注意:
 中国属于东八区,会把时间增加8个小时1970年1月1日08:00:00
把毫秒转换为日期:
 1天=24x60x60=86400秒=86400x1000=86400000毫秒
构造方法
学习类都是一个过程,先学习这个类的构造方法;有了构造方法后,就可以创建对象,然后通过对象调用它里面的成员方法。
无参构造
public static void main(String[] args) {        //Data的空参数构造方法-Data()获取当前系统的时间(精确到毫秒的系统当前时间)        Date date = new Date();        //java.util.Date类的toString()方法已经被重写了        //所以直接输出对象,不是这个对象的内存地址,而是一个日期字符串        System.out.println(date); //输出:Sun Aug 28 21:18:47 CST 2022    }有参构造
public static void main(String[] args) {        // Date类的带参数构造方法        //Date(long date) :传递毫秒值转换为Date日期        Date date = new Date(0L); //把参数里面的毫秒转成对应的日期        System.out.println(date); //输出:Thu Jan 01 08:00:00 CST 1970        Date date1 = new Date(1620543792746L); //把参数里面的毫秒转成对应的日期        System.out.println(date1); //输出:Sun May 09 15:03:12 CST 2021    }成员方法getTime()
public static void main(String[] args) {        // Long getTime()把日期转换为毫秒值(相当于System.currentTimeMillis()方法)        // 返回自1970年 1月一日 00:00:00 到当前系统时间一共经历了多少毫秒        Date date = new Date();        long time = date.getTime();        System.out.println(time); //1661693372684    }currentTimeMillis方法
此方法是System类的一个方法,作用和getTime()一样,返回自1970年 1月一日 00:00:00
 到当前系统时间一共经历了多少毫秒。
public static void main(String[] args) {        Long TimeMillis = System.currentTimeMillis();        System.out.println(TimeMillis); //输出:1661693849165    }那么这个方法可以用来干什么呢?
看的出来,经过测试,下列代码空循环一亿次,用了3毫秒
public static void main(String[] args) {        //统计一个方法的耗时        //在调用目标方法之前记录一个毫秒数        Long TimeMillis = System.currentTimeMillis();        //这里调用方法        print();        //在执行完目标方法之后记录一个毫秒数        Long end = System.currentTimeMillis();        System.out.println("耗费时长:"+(end-TimeMillis)+"毫秒"); //输出:耗费时长:3毫秒    }    public static void print(){        for (int i = 0; i < 100000000; i++) {                    }    }DateFormat和SimpleDateFormat类
DateFormat类和它的子类SimpleDateFormat,后者是前者的子类,所以它有父类的format和parse方法。
java.text.DateFormat:是日期/时间格式化子类的抽象类。
 作用: 格式化(也就是日期->文本) 、解析(文本->日期)
构造方法
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类
 java.text.SimpleDateformat extends DateFormat
 构造方法:
 SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
 参数: String pattern:传递指定的模式
模式:区分大小写
| y | 年 | 
|---|---|
| M | 月 | 
| d | 日 | 
| H | 时 | 
| m | 分 | 
| s | 秒 | 
写对应的模式,会把模式替换为对应的日期和时间 “yyyy-MM-dd HH:mm:ss”
 注意:
 模式中的字母不能更改,连接模式的符号可以改变"yyyy年MM月dd日 HH时mm分ss秒"
成员方法
String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串
 Date parse(String source)把符合模式的字符串,解析为Date日期
使用这两个成员方法及其细节
public static void main(String[] args) throws ParseException {        demo01();        demo02(); //调用的方法也会出红线,也要光标放红线上alt+回车选择第一个    }    private static void demo01() {        //使用DateFormat类中的format方法,把日期格式转化为文本        //1.创建SimpleDateFormat对象,构造方法中传递指定的模式        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式        //2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式转换为符合模式的字符串(文本)        //String format(Date date) 按照指定模式,把Date日期,格式化为符合模式的字符串        Date date =new Date(); //获取当前系统时间        String format = sdf.format(date);        System.out.println(date); //Sun May 09 16:09:50 CST 2021        System.out.println(format); //2021年09月09日 16时09分50秒    }    /*        使用DateFormat类中的parse方法,把文本解析成为Date日期        1.创建SimpleDateFormat对象,构造方法中传递指定的模式        2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期        注意:            public Date parse(String source)throws ParsejException            parse方法声明一个异常叫ParseException            如果字符串和构造方法的模式不一样,那么程序就会抛出异常            调用一个抛出异常的方法,就必须的处理这个异常            要么throws继续抛出这个异常,要么try catch自己处理            出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个            这就是在我的方法声明这个异常,我不处理,我声明一下            程序没有问题,正常执行            出现问题,打印异常,并终止程序     */    private static void demo02() throws ParseException {        //使用DateFormat类中的parse方法,把文本解析成为Date日期        //1.创建SimpleDateFormat对象,构造方法中传递指定的模式        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式        //Date parse(String source) 把符合,模式的字符串,解析为Date日期        //2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期        /*        出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个        这就是在我的方法声明这个异常,我不处理,我声明一下         *///        把字符串类型按照传入构造模式解析成为Date类型,传入指定模式和字符串要一样,字符串这边少个秒就报错        Date parse = sdf.parse("2021年09月09日 16时09分50秒");        System.out.println(parse);//Sat Jan 09 16:09:50 CST 2021    }练习

public static void main(String[] args) throws ParseException {        Scanner scanner = new Scanner(System.in); // 输入:2001-07-02         System.out.println("请输入出生日期(格式为yyyy-mm-dd):");        String next = scanner.next(); //拿到字符串出生日期        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");        Date parse = simpleDateFormat.parse(next); //把字符串出生日期解析成为DAte格式        long ee = parse.getTime(); // 把Date格式的出生日期转换为毫秒值        Date aa = new Date(); //获取当前日期毫秒值        long hh = aa.getTime(); //把当前日期毫秒值转换成为毫秒值//        Date aa = new Date().getTime(); 一步到位 匿名        long dd = hh-ee; //差值        long jj = dd/1000/60/60/24; //把毫秒值转换成为天        System.out.println(jj); // 输出:7908。 代表着 2001-07-02 到今天已经过了7908天//        System.out.println(dd/1000/60/60/24); //一步到位    }Calendar日历类


常用成员方法

get

set

add

geiTime
